计算C中文本文件中每行的字符数

时间:2015-09-12 02:40:02

标签: c count line

所以我试图计算文本文件每行中的字符数。我已成功计算了它们,但似乎无法计算文本的最后一行。这是我的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 1000
#define NEWLINE '\n'

int 
main(int argc, char*argv[]){
    int bytes =-1, lines = 1;
    char x,line[MAXLINE];
    FILE *file;

    file = fopen("no.txt","r");
    printf("s0: query = \"%s\"\n",argv[1]);
    printf("---\n");

    if (file == NULL){
        printf("File doesn't exist \n");
        exit(EXIT_FAILURE);
    }

    while( fgets (line, 1000, file)!=NULL ) 
    {
        printf("%s",line); 

        while((x = getchar())!= EOF ){
            bytes +=1;
            if (x == NEWLINE){
                printf("S1: line %6d, bytes = %3d\n---\n",lines,bytes);
                bytes = -1;
                break;
            }
        }
        lines +=1;
    } 

    fclose(file);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

这个循环:

mysql> source /home/melissa/myscript.sql

是从控制台而不是从文件中读取。这可能不是你想要的。您已使用while((x = getchar())!= EOF ){ 从该文件中读取了一行,因此您只需使用fgets即可查看它有多长。但是,由于strlen将换行符保留在缓冲区中,因此您需要先使用NULL字节代替换行符来删除换行符。

所以你的主循环应该是这样的:

fgets
相关问题