【问题标题】:C Print out a string arrayC 打印出一个字符串数组
【发布时间】:2015-05-18 16:40:02
【问题描述】:

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

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

【问题讨论】:

  • 这不是字符串数组,而是字符数组。请阅读您的教科书以进行澄清。
  • 您没有字符串数组,而是字符数组。所以看起来你只是在阅读你试图阅读的每个字符串的第一个字符

标签: c arrays printf


【解决方案1】:
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]);
}

【讨论】:

    【解决方案2】:

    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 开始。

    【讨论】:

      【解决方案3】:

      使用

      char answer[256];
      

      你只得到一个字符数组,可以用来存储一个字符串。要存储字符串数组,请使用:

      char answer[20][256];
      

      这可用于存储 20 个字符串,只要这些字符串都不超过 255 个字符。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 2014-09-18
        • 1970-01-01
        • 2017-06-26
        相关资源
        最近更新 更多