2016-03-27 6 views
-1

入力を読む必要があります。物事は入力が1またはaまたは1 word1またはa word1 word2になることができます。Cの行を読む

入力全体を読み取るにはどうすればよいですか?私はscanf("%s", var);を試してみましたが、あなたが書いた最初のものしか取得できません。そして、必ずしも3つの変数があるわけではないので、scanf("%s %s %s", var, var2, var3);を使うことはできません。

は私も gets(var);を試してみましたが、私はこれを行うことができますどのように

warning: the 'gets' function is dangerous and should not be used.を取得しますか?

+1

getlineを使うことができます – stark

+2

代わりに 'fgets'を使います。 –

+0

ありがとう、みんな – user6122011

答えて

0

gets()は、バッファの大きさを知る方法がないため、推奨されていません。その結果、それを与えるバッファを簡単に上書きすることができます。

代わりにfgets()を使用してください。

char buffer[100]; 
fgets(buffer, sizeof buffer, stdin); 

それとも、あなたが動的にメモリを割り当てた場合は、手動でサイズを指定する必要がありますので、sizeofオペレータが、助けにはなりません:警告の

const size_t bufferSize = 100; 
char *buffer = malloc(bufferSize); 
fgets(buffer, bufferSize, stdin); 

ほんの少しの言葉を、 fgets()関数は、を読み込み、改行文字をバッファに格納します()。

+0

ありがとう! – user6122011