文件读取和字符计数

时间:2012-08-16 01:23:27

标签: c file newline argv fgetc

我正在尝试读取文件,然后按字符输出文件。我希望用户输入一个数字,该数字将是要显示的行数。

如果没有以下行,我的代码将显示整个文本文件。 if(y == lineCount)break;

当计算的换行符数等于用户输入的数字时,该行应该打破循环。

我可以计算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 );
}

2 个答案:

答案 0 :(得分:1)

你想要scanf(“%d”,&amp; y)而不是scanf(“&amp; d”,&amp; y)。

答案 1 :(得分:0)

您希望scanf("%d", &y)代替scanf("&d", &y)

此外,您永远不会初始化lineCount,因此它的初始值不会被设为0。