【发布时间】:2019-04-11 10:37:02
【问题描述】:
我是 C 新手,我正在尝试将一些字符串存储在 2D 字符数组中。这就是我所拥有的:
char strArray[100][100];
char input[100];
scanf("%s",&input);
strArray[i] = input; //this is where i get the incompatible types assignment error
如评论中所示,我收到incompatible types in assignment 错误。我需要使用char *strArray[100][100] 的数组吗? strArray 和 input 不是同一类型(char [])吗?一个是一维的,另一个是二维的,但我只是没有在分配中指定第二维,因为每个字符串都存储在一个新行中。我做错了什么?
【问题讨论】:
-
scanf("%s",&input);->scanf("%s",input);,strArray[i] = input;->strcpy(strArray[i], input); -
@Osiris 那是一回事,对吧?数组作为指针工作,但 & 工作得太正确了吗?
-
input衰减为指向char的指针,而&input是指向char[100]的指针。所以不一样,%s期望指向char的指针。 -
哦,我明白了,至于 strcpy() 函数,这是完成这个“程序”的唯一方法吗?也可以用指针来完成吗?
-
您可以遍历数组并逐个复制它。或者您可以使用
memcpy。您不能使用=运算符复制数组。