【问题标题】:Best way to get number of lines in a file C [duplicate]获取文件C中行数的最佳方法[重复]
【发布时间】:2023-03-22 14:29:01
【问题描述】:

我正在寻找一种有效的方法来获取 fie 中的行数。在写入文件或打开文件并计算行数后,我可以选择将数字写入另一个文件。哪个更好?

【问题讨论】:

  • 统计'\n'的字符数。
  • 大部分时间保持另一个文件中的行数以及文件的日期时间会更快。如果计数文件不可用或原始文件的日期/时间已更改,请打开原始文件并计算换行符的数量。
  • 将行计数存储在另一个文件中的缺点是计数可能与它应该描述的文件不同步。如果将其用于生产,这些问题几乎总是会让人头疼。除非读取文件以获取计数确实会对性能产生不良影响,否则请避免使用该解决方案。例如 - 你是否必须阅读文件?如果是这样,那么只需读取文件以获取行数。

标签: c


【解决方案1】:

这个小程序统计文件中的行数并打印结果:

#include <stdio.h>

int main() {

  FILE *fp;
  fp=fopen("./countLines.c", "r");
  long int lines =0;

  if ( fp == NULL ) {
    return -1;
  }

  while (EOF != (fscanf(fp, "%*[^\n]"), fscanf(fp,"%*c")))
        ++lines;

  printf("Lines : %li\n", lines);

  return 0;
}

这种解决方案的优点是我们不需要将文件加载到内存中。我们使用scanf 来匹配\n 行字符。

如果你想让它在 Windows 上也能工作,这只适用于 Linux/Mac,你需要在 scanf 函数中使用 \r\n 而不是 \n

【讨论】:

  • 你不需要在 Windows 中使用\r\n
  • 只有带有\r 行分隔符的文件才被视为特殊文件;也就是说,那些也是濒临灭绝的物种。
猜你喜欢
  • 2014-11-10
  • 2016-12-12
  • 2011-10-27
  • 2018-07-10
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 2019-06-05
  • 2012-07-30
相关资源
最近更新 更多