使用c的文件中的行数

poo*_*ank 3 c file

我刚接触CI中的文件处理正在开发一个程序,用于计算c中的行数和字符数.该程序对于字符工作正常但是对于行,o/p总是少一个.我使用了新行字符算不了.of lines.Here是我的代码:

 main()
{
    FILE *fp;
    int c,nl=0,nc=0;
    char str[20];
    printf("Enter filename\n");
    scanf("%s",str);
    fp=fopen(str,"r");
    if(fp==NULL)
    {
        while(1)
        {
        printf("File does not exist\n");
        printf("Enter new filename\n");
        scanf("%s",str);
        fp=fopen(str,"r");
        if(fp!=NULL)
        break;
        }
    }
    c=getc(fp);
    while(c!=EOF)
    {
        if(c=='\n')
        nl++;
        nc++;
        c=getc(fp);
    }
    printf("no of lines=%d no of char=%d",nl,nc);
}
Run Code Online (Sandbox Code Playgroud)

我的实现有什么问题?.还有其他方法来计算no.线?

Dav*_*rtz 8

这取决于你对一条线的定义.如果文件只包含单个字符'a',它是否有一行或没有行?按照程序的逻辑,它有零线.

您可以在while循环结束时在结束之外添加}此行:

if (c != '\n') nl++;
Run Code Online (Sandbox Code Playgroud)

如果最后一个字符不是换行符,那将添加一个额外的行.您还应该初始化c为零,否则如果文件为空,这将导致不可预测的结果.

从其他答案中可以看出,计算文件中的行数意味着什么并不完全清楚.在开始编写代码之前,请确保您非常清楚地了解了您正在尝试计算的内容.