我是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
是否不是同一类型(字符[])?一个人的一维和另一个人显然是2D,但是我只是没有在赋值中指定第二维,因为每个字符串都存储在新行中。我在做什么错了?
答案 0 :(得分:2)
您必须使用strcpy()
:
#include <stdio.h>
#include <string.h>
int main(void)
{
char strArray[100][100];
char input[100];
scanf("%s", input);
strcpy(strArray[0], input);
}
但永远不要,真的:永远不要!将scanf()
与"%s"
一起使用,而不限制要读取的字符数(字段宽度):
scanf("%99s", input);
答案 1 :(得分:0)
在C语言中,不能以char input1[100], input2[100]; input1 = input2
的形式分配数组。您可以仅使用strcpy
复制字符串或使用memcpy
复制任意内存块的内容。
因此,如果您的情况下strcpy(strArray[i],input)
是i
和0
之间的整数值,则必须写99
。
此外,您还必须在&
中省略scanf("%s",&input)
(即写scanf("%s",input)
),因为input
已经衰减到指向char的指针。
答案 2 :(得分:0)
您可以使用strcpy()将输入中的每个字符复制到strArray [i]。在这种情况下,您将使用
strcpy(strArray[i], input);