[解決済み] fgets() が入力を待たない
2022-02-17 14:56:50
質問
以下のコードを書きました。
int N;
scanf("%d", &N);
int i;
for (i = 0; i < N; i++) {
char line[LINE_MAX];
if (fgets(line, LINE_MAX, stdin) != NULL) {
// do stuff with line here
printf("%c - %c\n", line[0], line[1]);
}
}
入力ファイルには行数が書かれていて、その行数に続いて処理を行いたい行数が書かれています。そこで、その行数を
N
. そのあと
fgets
を取得し、その行を処理できるようにする。
しかし
fgets
は、初回はstdinを待たないようです。私はいつも
-
で、その後、入力待ちとなります。つまり、ループの最初の繰り返しでは、標準入力を待たずに
fgets
で区切られた2つの空文字を出力するだけです。
-
を私の
printf
を使用します。
なぜでしょう?どうすれば
fgets
は毎回入力を待つのでしょうか?スレッドの問題のような気がします。
解決方法は?
として
ジーコサウルス
が残した改行を処理していないのでは?
scanf
. を修正することができます。
scanf
の書式文字列を考慮しています。
scanf("%d *[^\n]", &N);
*[^\n]
は、整数入力の後にある改行以外のものは無視するが、改行については何もしない(スキップする)、と言っています。
テストプログラムの出力です。
emulawsk@cs:~/testing$ ./test2
3
13
1 - 3
26
2 - 6
59
5 - 9
関連
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】組み込み関数「malloc」の暗黙の宣言の非互換性
-
[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】malloc():メモリ破壊
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み】C言語のフォーマット文字列でデータ引数が使用されない [重複]。
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?