繁体   English   中英

在 C 中存储多个字符串

[英]Storing multiple strings In C

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

#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]已经返回字符串中第一个字符的地址。 同样的事情也适用于印刷。 正确的方法是做以下事情:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM