4

ファイルから複数の行を入力するプログラムを書いていました。問題は、行の長さがわからないため、fgets を使用できないため、バッファーのサイズを指定する必要があり、fscanf を使用できないため、スペース トークンで停止することです。入力として取得された各文字の再割り当てですが、もっと簡単な方法があると思います。

fscanf(file,"%[^\n]",line);

誰かがより良い解決策を持っているか、誰かが上記の仕組みを説明できますか? (私はそれをテストしていません)

必要に応じて GCC コンパイラを使用します

4

4 に答える 4

1

scanf または fscanf の単純なフォーマット指定子は、このプロトタイプに従います。

%specifier 

指定子

私たちが知ってdいるように、整数のフォーマット指定子です

[characters]isScanset括弧内に指定された任意の数の文字。最初の文字ではないダッシュ (-) は、一部のライブラリ実装で移植性のない動作を引き起こす可能性があります。

[^characters]括弧内の文字として指定されてい Negated scansetない任意の数の文字。


fscanf(file,"%[^\n]",line);  

Negated scansetこの場合、任意の文字が出現するまで任意の文字を読み取りますnewline character


他の人が示唆したように getline()、または使用してfgets()を見ることができます

于 2013-10-16T17:48:03.757 に答える