这是一个代码示例
void something()
{
char c[100];
scanf("%s",c);
char c2[100]=c;
}
我的问题是,当我进行这个赋值操作时,会出现一个错误提示,说我不能赋值。
char * "c" to char[] "c2";
我该如何完成这个任务?
这是一个代码示例
void something()
{
char c[100];
scanf("%s",c);
char c2[100]=c;
}
我的问题是,当我进行这个赋值操作时,会出现一个错误提示,说我不能赋值。
char * "c" to char[] "c2";
我该如何完成这个任务?
你需要使用strcpy()
(或类似函数):
...
char c2[100];
strcpy(c2, c);
你不能使用 =
运算符来赋值数组。
您需要使用strcpy()函数。
char c2[100];
strcpy(c2, c);
strncpy
,因为它不一定会以NUL结尾。(在这里不是问题,因为c
和c2
都有相同数量的元素,但是另一方面,这也意味着普通的strcpy
也不会有问题。)fgets
比scanf
更好。http://c-faq.com/stdio/scanfprobs.htmlchar []
不是 C 语言中的有效值类型(只是有效声明类型),因此你不能对 char []
类型做任何操作。你可以将它们转换为其他类型(通常是 char *
),然后再进行操作。
因此,如果你想实际处理数组中的数据,你需要使用一些函数或操作来获取指向 char *
的引用。在你的示例中,很明显可以选择使用 strcpy 或 memcpy 函数。
c
内的数据赋值给c2
,还是想将指针c
赋值给c2
? - Earlzvoid
返回类型。 - David R Tribble