2011-10-23 12 views
0

私はCを使い慣れていません。ユーザの入力を求める方法を知っておく必要があります。これは任意の数の単語で、次に文字を配列に入れます。ユーザの入力と配列への挿入

私はこれがあまりにも難しいとは思わないと知っていますが、Googleはちょっと混乱しています。事前に

おかげで困難を勉強

答えて

1

私があなたの問題を正しく理解すれば、何いくつかの未知のサイズのユーザー入力を読み込むことが必要なので、この情報をchar配列に格納します。この場合、可能な解決策の1つはデフォルトの固定サイズに割り当てる必要のある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

スタート... 小さなヘルプ:ユーザー入力を使用scanf()またはfgets()のために使用printf()

  • を印刷するための

    1. (第2は、より良い少しあります難しい...)
  • 関連する問題