我对C语言编程很新,我正在尝试打印一个字符串数组。我可以很容易地输入输入,但是当它尝试打印数组时程序停止响应。感谢任何帮助。谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int a, b;
char answer[256];
for(a=1; a<=20; a++)
{
scanf("%s", &answer[a]);
}
for(b=1; b<=20; b++)
{
printf("%s\n", answer[b]);
}
}
更新:感谢大家的快速回复,现在该程序运行顺利!
答案 0 :(得分:5)
int a, b;
char answer[20][256];//<- array of char[256]
for(a=0; a<20; a++)//<- 0 origin
{
scanf("%255s", answer[a]);//<- Reading of the string with a maximum 255 characters (One is reserved for the termination character('\0'))
}
for(b=0; b<20; b++)
{
printf("%s\n", answer[b]);
}
答案 1 :(得分:4)
1)
char answer[256];
是一个字符数组,而不是字符串。顺便说一句,你编写了其余的代码,你需要一个数组数组,如:
char answer[100][256];
2)
scanf()
期望char*
格式字符串%s
。所以你只需要:
scanf("%s", answer[a]);
3)main()
应该返回int
。所以它应该是:int main(void)
或同等的。
4)你有可能出错的另一个问题(查看你的循环)是C中的索引是从零开始的,而不是从1开始。
答案 2 :(得分:1)
使用
char answer[256];
您只获得一个字符数组,可用于存储字符串。要存储字符串数组,请使用:
char answer[20][256];
只要这些字符串都不超过255个字符,就可以用来存储20个字符串。
void main()
{
int a, b;
char answer[20][256];
///////////////////////////////////////////
// Notice the difference in the value of a.
///////////////////////////////////////////
for(a=0; a<20; a++)
{
scanf("%s", answer[a]);
}
for(b=0; b<20; b++)
{
printf("%s\n", answer[b]);
}
}