0

ファイルを読み取り、行番号 30 から行番号 50 までの行を出力するプログラムを作成しようとしていますが、それを達成できません。

主要() {

FILE *fp;
char ch;

int nol = 0;
fp = fopen ("test.txt","r");

while (1){
    ch = fgetc(fp);

    if (ch == '\n')
        nol++;


    if (nol > 30 || nol < 50){
        printf ("value of NOL is %d\n", nol);
    }


    if (ch == EOF)
        break;


}
fclose (fp);
printf ("\nNumber of line in file: %d\n", nol);

if nol >=30 and nol <=50 条件で試して印刷しようとしましたが、うまくいきません。どんな入力も大いに役立ちます。

4

2 に答える 2

4

「and」演算子は&&、not||

...

if (ch == '\n')
{    nol++;
     if (nol >= 30 && nol =< 50) 
         printf ("value of NOL is %d\n", nol);
}

数字だけでなく行自体を印刷したい場合は、文字または他の何かを収集して、'\n'.

于 2013-02-02T22:47:08.450 に答える
3

まずはロジック部分。

通常、行番号は 0 ではなく 1 から始まると考えられます。そのnolため、1 に初期化します。

30 行目から 50 行目を表示する場合は、それらをテストに含める必要があります。>=の代わりに使用します>( も同様<)。

&&もちろん、代わりにを使用する必要があり||ます。そうしないと、条件は常に true になります。

実際に行を表示したい場合は、次のようなものが必要です。

if( nol >= 30 && nol <= 50 ) putc(ch);
if (ch == '\n') nol++;

ステートメントの順序に注意してください。

しかし実際にはfgets、一度に 1 文字ずつ読み取るのではなく、行を表示したい場合は using を検討する必要があります。

于 2013-02-02T22:48:27.083 に答える