在 C 中存储多个字符串

Storing multiple strings In C

C语言如何存储多个字符串? 如果我们考虑从用户那里获取字符串的数量,我们如何将它们保存在c语言中,考虑到我们在询问用户的字符串数量之前没有声明任何字符字符串,因为字符串的数量不是available.here 是我所做的,但我最终打印了字符串的第一个字符。

#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
char array[a][1];
for(int i = 0 ; i < a ; i++)
{
    for(int j = 0 ; j < 1 ; j++)
    {
    scanf("%s",&array[i][j]);
    }
}
    for(int i = 0 ; i < a ; i++)
{
    for(int j = 0 ; j < 1 ; j++)
    {
    printf("%c",array[i][j]);
    }
    printf("\n");
}

}

让我们从头开始。
我不认为你真的理解什么是 char。 Char 只是一个字符。所以像 char array[16][1] 这样的东西意味着你有 16 个字符串的数组,其中每个字符串的最大长度为 1。你的下一步 scanf("%s", &array[i][j]); 也没有意义,因为你得到了多个符号作为输入,但你只写了一个字符。正确的解决方案应该是这样的:

char array[a][255]; // 255 will be maximum length of one 'string'
for(int i = 0; i < a; ++i) {
    scanf("%s", array[i]);
}

如你所见,这里不需要&签名,因为array[i]已经returns字符串中第一个字符的地址。同样的事情也适用于印刷。正确的方法是做以下事情:

for(int i = 0; i < a; ++i) {
    printf("%s\n", array[i]);
}

您的解决方案只显示一个字符。
请记住,char 只是基本数字,范围通常为 0-255(如果编译器默认 charunsigned char).您的代码暗示您将 char 视为完整的 C++ 字符串,但它绝对不是。