-1

各行をスキャンして印刷するプログラムをコーディングしたいと考えています。また、このプロセスは、特定の行が検出されたときに継続する必要があります。ここに私のファイルの内容があります:

1
2
3
4
5
6
7
8
9

とコード:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *file;
int main(){
    file=fopen("numbers.txt","r");
    char line[10];

while(1){
         fgets(line,10,file);
         printf("%s \n\n",line);
         if(strcmp(line,"6")) break;
}

    fclose(file);
    system("pause");
    return 0;
}

しかし、ループは機能せず、最初の行のみを出力します。問題はどこだ?

4

3 に答える 3

0

これはうまくいくはずです:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
FILE *file;
int main(){
    file=fopen("numbers.txt","r");
    char line[10];

    while(1){
             fgets(line,10,file);
             printf("%s \n\n",line);
             if(!strcmp(line,"6\n")) break;
    }

    fclose(file);
    system("pause");
    return 0;
}

2 つの問題がありました。文字列が等しい場合、最初の strcmp は 0 を返し、2 番目の fgets は改行マーク '\n' を返すため、それも一致させる必要があります。

于 2013-11-07T22:51:19.467 に答える