2011-10-23 49 views
0

我是C的新手。我需要知道如何詢問用戶輸入(可能是任意數量的單詞),然後將這些字符放入數組中。用戶輸入並插入到數組中

我知道這不應該太難回答,但Google只是讓我困惑。

在此先感謝

回答

1

如果我正確地理解你的問題,喲你需要讀取一些未知大小的用戶輸入,從而將這些信息存儲到一個char數組中,對嗎?如果是這種情況,一個可能的解決方案是將一個char數組分配給默認的固定大小,這會動態地重新分配它的大小。

一旦循環遍歷輸入的字符,同時驗證您沒有命中EOF,則應該將該char附加到該數組。接下來的技巧是檢查數組是否足夠大以容納來自用戶輸入的字符。如果不是,則必須重新分配陣列的大小。

示例實現的解決方案的可能看起來有點像這樣:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    unsigned int len_max = 128; 
    unsigned int current_size = 0; 

    char *input = malloc(len_max); 
    current_size = len_max; 

    printf("\nEnter input:"); 

    if(input != NULL) { 
     int c = EOF; 
     unsigned int i = 0; 

     // Accept user input until hit EOF. 
     while ((c = getchar()) != EOF) { 
      input[i++] = (char)c; 

      // If reached maximize size, realloc size. 
      if (i == current_size) { 
       current_size = i + len_max; 
       input = realloc(input, current_size); 
      } 
     } 

     // Terminate the char array. 
     input[i] = '\0'; 

     printf("\nLong String value:%s \n\n",input); 

     // Free the char array pointer. 
     free(input); 
    } 

    return 0; 
} 

在性能方面,我不是大家肯定,這可能是最好的解決辦法,但我希望這可以幫助你解決你的問題。

親切的問候 〜E.

0

開始,更加努力學習...... 一個小的幫助:

  1. 對於印刷使用printf()
  2. 用戶輸入使用scanf()fgets()(第二個是更好,但一點點更難...)