0

ファイルを読み込んでから、ファイルを文字で出力しようとしています。表示する行数となる数値をユーザーに入力してもらいたい。

次の行がないと、私のコードはテキスト ファイル全体を表示します。if (y == lineCount) ブレーク;

この行は、カウントされた改行文字の数がユーザーが入力した数と等しい場合にループを中断することになっています。

newLine 文字の数を数えて表示することはできますが、その特定の数の newLines に達した後にループを中断しようとすると、コードは 1 文字の後で中断します

#include <stdio.h>

int main ( int argc, char *argv[] )
{
    FILE *file = fopen( argv[1], "r" );
    int lineCount, x, y;

    printf("enter a number of lines of lines to be displayed\n");
    scanf("&d", &y);


    while  ( ( x = fgetc( file )) != EOF )  //read characters
    {
        printf( "%c", x );       //print character

        if (x == '\n')           //check for newline character
            lineCount++;    

        if (y == lineCount)      //check for newLine character
            break;               //??? y = lineCount after 1 character???
    }

    printf( "%d lines in the text file\n", lineCount );  //testing the newline characters was being read

   fclose( file );
}
4

2 に答える 2

1

scanf( "&d"、&y)の代わりにscanf( "%d"、&y)が必要です。

于 2012-08-16T01:30:42.427 に答える
0

scanf("%d", &y)の代わりに必要ですscanf("&d", &y)

また、初期化することlineCountはないため、初期値が0になることは保証されません。

于 2012-08-16T01:32:56.263 に答える