2013-08-06 147 views
4

假設我有這樣的話:老虎,獅子,長頸鹿。如何存儲並打印2d字符/字符串數組?

我怎樣才能將其存儲在使用for環和scanf然後二維數組char使用for循環打印字一個一個?

喜歡的東西

for(i=0;i<W;i++) 
{ 
    scanf("%s",str[i][0]); //to input the string 
} 

PS對不起,問這樣一個基本的問題,但我找不到在谷歌一個合適的答案。

+1

如何'str'聲明? –

+0

我感應到緩衝區溢出;) – spartacus

回答

8

首先你需要創建一個字符串數組。

char arrayOfWords[NUMBER_OF_WORDS][MAX_SIZE_OF_WORD]; 

然後,你需要在最後向oreder輸入字符串到數組

int i; 
for (i=0; i<NUMBER_OF_WORDS; i++) { 
    scanf ("%s" , arrayOfWords[i]); 
} 

打印它們使用

for (i=0; i<NUMBER_OF_WORDS; i++) { 
    printf ("%s" , arrayOfWords[i]); 
} 
+0

這不是動態的,也不使用指針數組 – Magn3s1um

+8

他沒有問那些東西。仔細閱讀問題。 –

+0

完美運行@Ran Eldan –

2
char * str[NumberOfWords]; 

str[0] = malloc(sizeof(char) * lengthOfWord + 1); //Add 1 for null byte; 
memcpy(str[0], "myliteral\0"); 
//Initialize more; 

for(int i = 0; i < NumberOfWords; i++){ 
    scanf("%s", str[i]); 
} 
2

你可以做到這樣。

1)創建一個字符指針數組。

2)動態分配內存。

3)通過scanf獲取數據。一個簡單的實現低於

#include<stdio.h> 
#include<malloc.h> 

int main() 
{ 
    char *str[3]; 
    int i; 
    int num; 
    for(i=0;i<3;i++) 
    { 
     printf("\n No of charecters in the word : "); 
     scanf("%d",&num); 
     str[i]=(char *)malloc((num+1)*sizeof(char)); 
     scanf("%s",str[i]); 
    } 
    for(i=0;i<3;i++) //to print the same 
    { 
     printf("\n %s",str[i]);  
    } 
} 
1
#include<stdio.h> 
int main() 
{ 
    char str[6][10] ; 
    int i , j ; 
    for(i = 0 ; i < 6 ; i++) 
    { 
    // Given the str length should be less than 10 
    // to also store the null terminator 
    scanf("%s",str[i]) ; 
    } 
    printf("\n") ; 
    for(i = 0 ; i < 6 ; i++) 
    { 
    printf("%s",str[i]) ; 
    printf("\n") ; 
    } 
    return 0 ; 
} 
+0

如果你解釋了你的代碼的確切含​​義,它可能會更有用。 – Nae