如何在c中从char *转换为char []

时间:2010-01-15 19:16:15

标签: c type-conversion

这是一个代码示例

void something()
{
   char c[100];
   scanf("%s",c);
   char c2[100]=c;
}

我的问题是,当我执行此任务时,错误说我无法分配

char * "c"  to char[] "c2";

我怎样才能完成这项任务?

4 个答案:

答案 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