2014-12-06 18 views
1

這是一種將數字串輸入到二維數組中的好方法嗎?我有幾個關於代碼的問題:* C *可接受的2D字符串輸入?

  • 該任務是輸入儘可能多的字符串,直到他們輸入一個空字符串爲止。然後我需要tokenizeatoi以後的字符串。

  • 使用1D陣列和char **來做它會更好嗎?

  • 最後,與char **,如果我爲字符串分配內存,是否必須爲令牌分配更多/不同的內存?

    int strInput (char string[][], int maxChars) 
    { 
    int i = 0; 
    
    printf("Enter strings of digits. Enter empty string to stop.\n"); 
    while ((string[i][maxChars] = getchar()) 
    { 
        printf("Please enter a string of digits:"); 
        i++; 
    } 
    string[i] = '\0'; 
    
    return i; 
    } 
    
+0

@lpapp我以爲我需要第一個維度來增加移動到下一個字符數組。 IE瀏覽器。 'string [0]'得到輸入。然後'i = 1;'so'string [1]'得到輸入,依此類推。但我認爲我需要使用'char **'所以我現在正在編寫代碼。 – 2014-12-06 08:03:03

回答

1

char string[][]ķ& [R符號是古老的,你應該用 「新」 char**風格,確實如此。

這是一個好的方法來輸入字符串的數字到二維數組?

絕對沒有。你用字符讀取字符而不是數字串,我假設你的意圖是。

使用一維數組和char **來做它會更好/更容易嗎?

也可以這樣做,在同一個字符串中的項目之間寫入一些標記。這基本上取決於你。

最後,用char **,如果我爲字符串分配內存,是否必須爲令牌分配更多/不同的內存?

是的,當然,你要麼預先分配一個非常大的內存,要麼保持重新分配。

+0

你說我可以使用數組和char **「too」。你指的另一種方式是什麼? – 2014-12-06 08:08:11

+0

@JordanLindsay:根據您的個人喜好,您可以在一維「陣列」以及2D中存儲字符串列表。你不需要二維數組的中間終結器,但你本質上需要一個1D。 – lpapp 2014-12-06 08:09:24

+0

謝謝你的幫助。我打算使用'char []'和'char **',因爲我想我已經弄清了語法。 – 2014-12-06 08:23:20