繁体   English   中英

为什么C中的linecount没有工作?

[英]Why doesn't my linecount in C work?

我正在尝试阅读一个文本文件但在此之前我想知道我要阅读的元素数量。 所以我需要计算文本文件的行数。 到目前为止,我有这个:

int getLinecount (char *file) 
{
    int ch, count = 0;
    FILE *fp = fopen(file, "r");
    if(fp == NULL)
    {
        return -1;
    }
    while((ch = fgetc(fp)) != EOF)
    {
        if (ch == '\n'); 
        {
            count++;
        }
    }
    fclose(fp);
    return count;
}

这很好用。 我没有对文本文件做任何改变,但仍打印130,000,尽管文件只有10,000行。 我在我的主要内容中唯一写的是:

linecount = getLinecount("...");

我真的很好奇错误在哪里。 此外,是否有更好的选择获得linecount?

你有一个尾随的分号; 在你的if语句之后。 然后,始终执行块:

{
    count++;
}

更改

if (ch == '\n'); 

至:

if (ch == '\n')

if之后尾随分号:将其删除。 使用尾部分号代码相当于:

if (ch == '\n') {}
count++;

意味着对于循环的每次迭代(文件中的每个char ), count都会递增。

你已经尾随分号删除后if

并且为了阅读文件,更好地使用此代码:

while((fgets(blahblahblah)) != NULL) {
  counter++;
}

一切都很好,除了分号( ; ),应该从行中删除

if (ch == '\n')

除了; 在其他人提到的问题上,可以在这篇文章中找到另一种解决方案,因为他解释了为什么他按照他的方式做事。

您可能需要考虑用于创建和查看此文件的操作系统。

PHP Echo Line Breaks复制:

  • '\\ n'是linux / unix换行符
  • '\\ r'是一个经典的mac换行符[OS X使用上面的unix \\ n]
  • '\\ r'+'\\ n'是一个Windows换行符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM