2016-04-04 97 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數組建議完全相同,但它使用指針來完成。