みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

sscanf エラー

sscanfで整数が読み込めません。
コマンドプロンプトの画面は以下のようです。

文章を入力してください。
aaaa 11 14
aaaa 4201776 4201870 1

以下が実行したコードです。
#include<stdio.h>
int main(void){
int a,b,c,i;
char name[20];

printf("文章を入力してください。\n");
scanf("%s",x);
c=sscanf(x,"%s %d %d",name,&a,&b);
printf("%s %d %d %d\n",name,a,b,c);

return(0);}
aaaa 11 14と表示されるように、御指摘おねがいします。

投稿日時 - 2015-06-14 16:23:02

QNo.8994118

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

こんにちわ。

参考URLの”空白、タブの読み飛ばし”の部分を読んで頂けると分かると思いますが、
通常scanfは空白を区切り文字として扱います。

>scanf("%s",x);
そのため、ここで変数xに入る内容は"aaaa"だけとなります。

参考URLに以下の回避方法が記載されています(改行文字以外を対象とする指定)。
>scanf("%[^\n]", x);

入力の取得をscanfにこだわらないのでしたら、gets関数を使って入力1行を取得するようにするほうが簡単かと思います。
>gets(x);

参考URL:http://ja.wikipedia.org/wiki/Scanf

投稿日時 - 2015-06-15 16:59:39

お礼

お返事ありがとうございます。

投稿日時 - 2015-06-28 17:47:23