【发布时间】:2017-07-19 18:32:24
【问题描述】:
char buffer[2000];
char boundary[]= "--this-is-a-boundary\n";
char header1_a[]= "Content-Disposition: form-data; name=\"metadata\"\n";
char header1_b[]= "Content-Type: application/json; charset=UTF-8\n\n";
printf("%s%s%s\n\n\n\n", boundary, header1_a, header1_b);
std::memcpy(buffer, boundary, sizeof boundary);
std::memcpy(buffer + sizeof boundary, header1_a, sizeof header1_a);
std::memcpy(buffer + sizeof boundary + sizeof header1_a, header1_b, sizeof header1_b);
std::memcpy(buffer + sizeof boundary + sizeof header1_a + sizeof header1_b,
strJSONout, sizeof strJSONout);
printf("%s", buffer);
但输出是:
--this-is-a-boundary
字符串的其余部分会发生什么?我希望缓冲区包含所有这些字符数组...
是不是因为我复制了以NULL结尾的char数组?
【问题讨论】:
-
"是因为我复制了以NULL结尾的字符数组吗?"是的
-
从传递给 memcpy 的长度中减去 1(最后一次调用除外)?
-
std::memcpy()不是 C -
@user3222184 帖子被标记为
C,std::memcpy()不是有效的 C 代码。您可以选择用 C 或其他语言编写代码。 -
字符串用
strcpy复制而不是memcpy。然后你可以用strcat连接其他字符串而不是计算起始位置:strcpy( buffer, boundary ); strcat( buffer, header1_a );