题目
读文本文件,统计行数
思路
本题打开文本文件,统计其中有多少行(以 计)。
fopen 后以 fgetc 读字符,遇到 '' 则 lines++;空文件为 0 行。用完 fclose。
解题分析
fgets 按行读,行数++;最后一行无换行也算一行。fopen 失败要处理。大文件同样线性扫描即可。
函数简要说明
本题用标准 I/O 读文本文件。常用接口如下:
fopen(path, "r"):以只读文本方式打开文件;成功返回FILE*,失败返回NULL,要先判断再使用。fgets(buf, size, fp):读一行(含换行符写入 buf,或读到 EOF);返回 buf 或NULL。统计行数时每次成功读入一行就lines++即可。fgetc(fp):读一个字符;配合feof(fp)可逐字符扫描,见换行'\n'时行数加一(与 fgets 思路等价)。fclose(fp):关闭文件,释放资源;打开成功后配对调用。
完整程序
#include <stdio.h>
int main(void)
{
FILE *fp = fopen("input.txt", "r");
if (!fp) {
printf("open failed\n");
return 1;
}
char buf[1024];
int lines = 0;
while (fgets(buf, sizeof buf, fp)) {
lines++;
}
fclose(fp);
printf("%d\n", lines);
return 0;
}