2016-04-04 173 views
-1

我正在一个学校项目上工作,我需要输入一个backetball比赛的国家teems。我需要输入3个团队,当我遇到打印问题时,这只是一个测试打印,我踢出了一个程序,这是用C语言编写的。最好的祝福。通过循环Printring字符串

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

您正在创建大小为30的char数组,并尝试将单独的char数组存储在各个char位置中。这就像将10加仑的牛奶倒入茶杯。如果你不完全明白,C中的字符串是空字符结尾的char数组。 – Chirality

+0

那么我应该放多大?谢谢你的回答 –

+0

你学过指针了吗?他们在使用字符串时创造奇迹。如果不是,请使用大小为[N] [Y]的2d char数组,其中N是字符串的最大数量,Y是您的字符串的最大长度。 – Chirality

回答

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字符数组T [X] [Y]:X是一个字符串的最大数,Y是字符串的最大长度可能

+0

感谢每一个人! –

+0

@JulianCosta如果您的问题已解决,请接受适当的答案,以便对他人有所帮助。 – AkaSh

0

大的是要记住的是,在C字符串是char类型的阵列,并在后面加上一个空终止字符(ASCII 0)。你在这里所做的是声明一个长度为30的char数组。你的程序试图将一个字符串(这是一个char数组)插入到数组中的每个插槽中,导致崩溃。

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

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

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

什么程序正在试图做的是推整个字符串(这是char秒的一大堆)到每个桶:

[a][ ][ ][ ][ ] 
z 
c 
f 
b 
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数组建议完全相同,但它使用指针来完成。