ANSI C memcpy / w func调用。 2个例子。 1件作品,1件没有。

时间:2014-04-26 15:51:57

标签: 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; 
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

Append的第二个参数是char,而不是char *!