通过循环打印字符串

时间:2016-04-04 16:10:00

标签: c string for-loop

我正在开展一个学校项目,我需要参加全国性的背叛比赛。我需要进入3个团队,当我遇到打印问题时,这只是一个测试打印,我把我踢出一个程序,这是用C语言编写的。最诚挚的问候。

#include<stdio.h>

int main()

{
    char t[30];

    int score1, score2;

    int i;

    printf("Enter the National Teams\n");
    for(i=1;i<4;i++)
    {
        scanf("%s", &t[i]);
    }
    for(i=1;i<4;i++)
    {
        printf("%s", t[i]);
    }
    return 0;
}

3 个答案:

答案 0 :(得分:0)

要记住的重要一点是C中的字符串是char类型的数组,末尾有一个空终止符(ASCII 0)。你在这里做的是声明一个长度为30的char数组。你的程序试图将一个字符串(这是一个char数组)铲入数组的每个插槽中,导致崩溃

你真正想要的是创建一个char s数组(也称为2D数组),并在每个插槽中存储一个字符串(然后再打印)。

为了澄清,想想一个像一系列桶这样的数组,每个桶都可以包含一个值(在这种情况下,是char):

[ ][ ][c][ ][a]

你的程序尝试做的是将整个字符串(这是一大堆char s)推入每个存储桶中:

[a][ ][ ][ ][ ]
 z
 c
 f
 b

答案 1 :(得分:0)

使用2-D char array,如下所示:

#include<stdio.h>

int main()
{
    char t[30][30];
    int score1, score2;
    int i;

    printf("Enter the National Teams\n");
    for(i=1;i<4;i++)
    {
        scanf("%s", t[i]);
    }
    for(i=1;i<4;i++)
    {
        printf("%s", t[i]);
    }
    return 0;
}

2-D char数组t [X] [Y]:X是字符串的最大数量,Y是字符串的最大长度

答案 2 :(得分:0)

您也可以这样做:

#include <stdio.h>

int main(){
  int i;

  char (*teamName)[10];

  for ( i=0; i < 3; i++ ){
    scanf("%s", &teamName[i]);
  }

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

  return 0;
}

它与下面的2D数组建议完全相同,但它使用指针来完成它。