这是一个代码示例
void something()
{
char c[100];
scanf("%s",c);
char c2[100]=c;
}
我的问题是,当我执行此任务时,错误说我无法分配
char * "c" to char[] "c2";
我怎样才能完成这项任务?
答案 0 :(得分:11)
您必须使用strcpy()
(或类似):
...
char c2[100];
strcpy(c2, c);
您无法使用=
运算符分配数组。
答案 1 :(得分:6)
您需要使用strcpy()
char c2[100];
strcpy(c2, c);
答案 2 :(得分:4)
更好的做法是使用strncpy(c2,c,100)来避免缓冲区溢出,当然也可以使用scanf(“%99s”,c)等来限制数据输入;
答案 3 :(得分:3)
char []
不是C中的有效值类型(它只是一个有效的声明类型),因此您无法对char []
类型执行任何操作。您所能做的就是将它们转换为其他内容(通常为char *
)并对其执行某些操作。
因此,如果您想要对数组中的数据实际执行某些操作,则需要使用一些带有char *
的函数或操作并对其进行解析。您的示例的明显选择是 strcpy 或 memcpy