2011-09-13 81 views
0

我想創建一個字符串數組,其中用戶將輸入和數據將存儲在數組..我不知道該怎麼做 - (我讀了幾本C書籍) 任何幫助ll是讚賞 我到目前爲止所嘗試的:字符串數組插入問題

int choice; 
    printf("enter the number of the strings: "); 
    scanf("%d",&choice); 
char **str=(char **)malloc(100); 
    int i; 



    for(i=0;i<choice;i++) 
    { 
     printf("enter %dth element ",i+1); 
      str[i]=(char *)malloc(10); 
     scanf("%s",str[i]); 
    } 
    printf("%s",str[0]); 
+3

你只需要閱讀更多我猜,這是非常基本的和基本的技能將使你做到這一點。 –

+0

是的,它應該!但問題是程序正在終止! –

+2

我應該希望它終止!我討厭運行一個我期望終止的程序,它會一直持續下去。 –

回答

1
You will have to allocate and initialize space for each string before reading them in. If you know he length of your input string then malloc/calloc that much space else guess a size but that would be wastage of space. 

for(i=0;i<choice;i++) 
    { 
     printf("enter %dth element ",i+1); 
     str[i] = malloc(sizeof(char)*length); 
     memset(str[i],0,length); 
     scanf("%s",str[i]); 
    } 
+0

是的動態分配是要走的路。但通常當你這樣做輸入時,你不知道字符串的大小,所以使用,複製和刷新一些大的緩衝區。 –

+0

str [i] = malloc(sizeof(char)* length); 這一行不起作用! –

+0

反正我解決了!謝謝 –

1

您沒有爲字符串分配任何空格。如果你對有界數組沒有問題,你可以將str定義爲char str[100][128],使其有100個字符串,每個字符串最多128個字符。至少在你學習一些基本的動態分配之前。

+0

我知道動態分配 - 我可以做到這一點 –

0

如果我正確讀取它,您已經定義了一個指向100個字符數組的指針。你真正想要的是'選擇'數組的長度100字符我想char str[choice][100]

然後你可以使用你的數組,因爲你有閱讀和打印的字符串輸入。