c - ANSI C memcpy/w 函数调用。 2个例子。 1 个有效,1 个无效。

标签 c memcpy

为什么编辑有效。编辑 2 无法像编辑 1 一样工作?另外如何让Edit2像Edit一样工作?

编辑:评论中的工作代码:

#include <stdio.h>

int main()
{
    char recBuffer[8024];
    char* temp = (char*)malloc(65536);

    strcpy(recBuffer, "Hello\n");

    int bytesRead = 7;
    memcpy(temp , &recBuffer, bytesRead );

    printf("%s\n", temp);

    return 0;
}

编辑2为什么会失败?:

#include <stdio.h> 

void Append(char* b, char data, int len)
{
    memcpy(b , &data, len ); 
}

int main() 
{ 
    int bytesRead = 7; 
    char recBuffer[8024]; 
    char* temp = (char*)malloc(65536); 
    strcpy(recBuffer, "Hello\n"); 
    Append(temp, recBuffer, bytesRead);    
    printf("%s\n", temp); 
    return 0; 
}

最佳答案

因为你的函数参数是char而不是char*。您应该创建数据参数 char* 并将其直接传递给 memcpy,而不是传递其地址。

关于c - ANSI C memcpy/w 函数调用。 2个例子。 1 个有效,1 个无效。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23313187/

相关文章:

c++ - 将两个空指针 vector (void *) 合并到新的结果 vector 中

C编程。如何深拷贝结构?

python - list(...).insert(...) 的性能

c - 在 C 中实现一个 shell

c - 循环内的宏和函数

c - 为什么数组可以直接赋值?

c++ - memcpy 与 startIndex?

c++ - memcpy(),更改预定义变量的值时出现段错误

c - 如何防止 c 解释 sed

c - C语言中如何改变数组中两个数字的位置?