我在使用 memcpy 时遇到以下错误。它不会给出编译错误,但不会给出我想象的结果。我以前从未使用过 memcpy,所以我确定我犯了一个简单的错误。我查看了以前的问题,但找不到具有结构的问题。我可以在自变量上使用 memcpy,但不能在结构上使用。
如果有人能指出我的错误那就太好了。
#include <stdio.h>
#include <string.h>
int main() {
struct st{
char c1[12];
char c2[32];
char c3[3];
char c4[7];
char c5[13];
char c6[5];
char c7[10];
};
struct st s;
char s1[] = "part number";
char s2[] = "j9uijd9d09fj";
char s3[] = "abc";
char s4[] = "seven";
char s5[] = "aaaaaaaa";
char s6[] = "ptype";
char s7[] = "user";
memcpy(s.c1,s1,sizeof(s.c1));
memcpy(s.c2,s2,sizeof(s.c2));
memcpy(s.c3,s3,sizeof(s.c3));
memcpy(s.c4,s4,sizeof(s.c4));
memcpy(s.c5,s5,sizeof(s.c5));
memcpy(s.c6,s6,sizeof(s.c6));
memcpy(s.c7,s7,sizeof(s.c7));
printf("%s\n",s.c1);
printf("%s\n",s.c2);
printf("%s\n",s.c3);
printf("%s\n",s.c4);
printf("%s\n",s.c5);
printf("%s\n",s.c6);
printf("%s\n",s.c7);
return 0;
}
我得到的输出:
part number
j9uijd9d09fj
abcseven
seven
aaaaaaaa
ptypeuser
user
谢谢!!!
最佳答案
将结构中 c3
的大小更改为 4
并将 c6
更改为 6
以允许 NULL
终止符。
struct st{
char c1[12];
char c2[32];
char c3[4]; /* putting 'abc' which is 4 chars */
char c4[7];
char c5[13];
char c6[6]; /* putting 'ptype' which is 6 chars */
char c7[10];
};
关于c - 结构上的 memcpy 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459436/