問題
符号なしの整数データが各行に1個ずつ並べられているはずの入力を受け取り、その形になっていない行を除去(し、除去した行は stderr に出力)するプログラムを作れ。前後にいくつか空白文字が並んでいることを除いて整数値が1個だけ書いてあった行については、その数値を左詰めに1行として出力せよ。(標準出力、標準エラー出力の最終行の末尾には改行を含める。この点に留意せよ。)
入力の行数を予め知ることはできない。 (キーボードから入力するときは、最後に C-d を入力する。)
【例】
入力例
1
2
3 4
5 6 7
8
出力例(stdout)
1
2
8
出力例(stderr)
3 4
5 6 7
質問内容
この問題の入力の終わりを取るのは,scanfではEOFに一致するときとしていたのでfgetsでも同じようにしようとしたらコンパイルエラーが出てしまいました.ここはどのように直せばいいでしょうか.nullにもしてみたのですが駄目でした.よろしくお願いします.
コード
C
1#include<stdio.h> 2#include<string.h> 3int main(void){ 4 char str[100]; 5 char pri; 6 while(fgets(str,sizeof(str),stdin)!=EOF){ 7 int i=0; 8 int flag=0; 9 while(str[i]!='\0'){ 10 if(str[i]!=' '){ 11 pri=str[i]; 12 flag++; 13 if(flag>1) break; 14 } 15 } 16 if(flag==1) printf("%c\n",pri); 17 } 18 return 0; 19 20}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/28 02:36