【问题标题】:Printring string through loop通过循环打印字符串
【发布时间】:2016-04-04 16:09:59
【问题描述】:

我正在做一个学校项目,我需要进入国家队参加一个背球锦标赛。我需要进入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;
}

【问题讨论】:

  • 您正在创建一个大小为 30 的 char 数组,并尝试将单独的 char 数组存储在各个 char 位置。这就像将一罐 10 加仑的牛奶倒入茶杯中。如果你不明白的话,C 中的字符串是以 null 结尾的字符数组。
  • 那么我应该放什么尺码?谢谢你的回答
  • 你学会指针了吗?它们在使用字符串时会产生奇迹。如果不是,请使用大小为 [N][Y] 的 2d 字符数组,其中 N 是字符串的最大数量,Y 是字符串的最大长度。
  • 我在理解它时遇到了一点问题,因为我在编程俚语方面的英语很糟糕,你能告诉我该怎么做吗?再次感谢
  • 哈哈,很有趣,因为我们今天学习了指针,生病搜索它,但如果你能告诉我如何处理指针,我会很感激,因为我很着急,谢谢!

标签: c string for-loop


【解决方案1】:

如下使用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;
}

二维字符数组 t[X][Y] : X 是最大字符串数,Y 是可能的最大字符串长度

【讨论】:

  • @JulianCosta 如果您的问题已经解决,请接受适当的答案,以便对其他人有所帮助。
【解决方案2】:

你也可以这样做:

#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;
}

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

【讨论】:

    【解决方案3】:

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

    您真正想要的是创建一个由chars 组成的数组(也称为二维数组),并在其中的每个槽中存储一个字符串(然后再打印一次)。

    为了澄清,将数组想象成一系列桶,每个桶都可以包含一个值(在本例中为char):

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

    您的程序试图做的是将整个字符串(即一大堆chars)推入每个存储桶:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      相关资源
      最近更新 更多