以下是我的代码段
struct encode
{
char code[MAX];
}a[10];
int main()
{
char x[]={'3','0','2','5','9','3','1'};
for(i=0;i<1;i++)
{
printf("%c",x[i]);
//This will printout like 3025931 now I want this to be stored in structure.
}
strcpy(a[0].code,x);
// or
a[0].code=x;//neither works
display();
}
void display()
{
printf("%c",a[0].code);
}
我希望输出如下:3025931。
由于不兼容的分配类型,我没有得到。请告诉我哪里出错了。
答案 0 :(得分:2)
我在这里看到两个问题。第一个是strcpy
的来源是a
,其中可能应该是x
。
第二个是x
不是以空值终止的。 C中的字符串是以空字符结尾的字符数组。
我会更改两行:
char x[] = {'3','0','2','5','9','3','1'};
strcpy(a[0].code, a);
为:
char x[] = {'3','0','2','5','9','3','1', '\0'};
strcpy(a[0].code, x);
这是一个完整的程序,可以提供你想要的东西(它实际上打印出两次数字,一次是在你的内循环中逐个字符,一次是printf
,这样你就可以看到它们是相同的) :
#include <stdio.h>
#include <string.h>
#define MAX 100
struct encode {
char code[MAX];
} a[10];
int main() {
int i, j;
char x[] = {'3','0','2','5','9','3','1','\0'};
for(i = 0; i < 1; i++) {
for(j = 0; j < 7; j++) {
printf("%c", x[j]);
}
printf("\n");
strcpy(a[0].code, x);
}
printf("%s\n",a[0].code);
return 0;
}
根据评论进行更新:
对不起我是C的新手。我很抱歉没有在开头正确粘贴代码片段:“printf(”%c“,a [0] .code);”不显示“3025931”。
不,它不会。这是因为a[0].code
是一个字符数组(在本例中为字符串),您应该使用"%s"
,而不是 "%c"
。更改printf
中的格式说明符应该可以解决该特定问题。
答案 1 :(得分:0)
下面,
strcpy(a[0].code, a);
strcpy(a[0].code, x);
...
此外,x
需要以空终止,或者您需要将strcpy
替换为strncpy
或memcpy
并传入一段长度。
答案 2 :(得分:0)
这一行没有多大意义:
strcpy(a[0].code, a);
也许你想要这个:
memcpy(a[0].code, x, sizeof x);
a[0].code[sizeof x] = '\0';
(第二行是必要的,以终止code
,使其成为正确的C字符串。)
答案 3 :(得分:0)
你的程序中有很多错误。最令人不快的是:
strcpy(a[0].code, a);
但也存在其他奇怪之处,例如
基本上,这个程序看起来像是一个没有线索的人复制粘贴的。