动态地用字符串填充字符数组

时间:2018-11-07 22:36:46

标签: c arrays char

我是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]数组? strArrayinput是否不是同一类型(字符[])?一个人的一维和另一个人显然是2D,但是我只是没有在赋值中指定第二维,因为每个字符串都存储在新行中。我在做什么错了?

3 个答案:

答案 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)i0之间的整数值,则必须写99

此外,您还必须在&中省略scanf("%s",&input)(即写scanf("%s",input)),因为input已经衰减到指向char的指针。

答案 2 :(得分:0)

您可以使用strcpy()将输入中的每个字符复制到strArray [i]。在这种情况下,您将使用

strcpy(strArray[i], input);