[英]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(如果编译器默认char为unsigned char )。 您的代码暗示您将 char 视为完整的 C++ 字符串,但绝对不是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.