C打印出一个字符串数组

时间:2015-05-18 16:40:02

标签: c arrays printf

我对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]);
}
}

更新:感谢大家的快速回复,现在该程序运行顺利!

3 个答案:

答案 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]);
   }
}