2011-07-28 4 views
2

私は、ユーザーから文字列に1-3単語をスキャンしようとしています。ただし、最初の単語だけがスキャンされます。文字列にスペースをスキャンするにはどうすればよいですか?

+0

あなたがしていることのコードを投稿してください。 – Mahesh

+0

scanf( "%s"、area); – Brianna

+0

ここで検索機能を使用してください。 ** scanf **の記事の数があります - http://stackoverflow.com/questions/tagged/scanf – adatapost

答えて

3
scanf("%s", &area) ; 

scanfスペースが検出されたストリームからの読み込みを停止します。代わりにgetlineを使用する必要があります。

+2

scanf()はセキュリティホールの巨大なソースです。 getline()はより効果的であるばかりでなく、もっと安全です。 –

3

一つの可能​​性は、文字列変換の代わりにスキャンセット変換を使用することです:

fgetsよう
char buffer[256]; 
scanf("%255[^\n]", buffer); 

多く、これはむしろ、最初の空白文字で停止よりも行の最後まで読み込みます。

+0

+1。これは標準Cにはないことに注意してください。 –

+0

@BillyONeal:実際には、スキャンセット*は標準Cの一部です(C99の7.9.6.2/12、C89/90の7.9.6.2など)。それにもかかわらず、最もよく知られている部分です。 –

+0

私は訂正しました。 –

関連する問題