练习:编写一个 C 程序,从命令行接收文件名,逐字节读取并计算文件的总字节数。
代码逻辑:
- 检查是否传入了一个文件名参数;
- 以二进制只读模式打开文件;
- 用
fgetc()逐个读取字节,直到遇到EOF; - 统计读取的字节数,即文件大小;
- 输出结果
fopen/fclosefgetcEOF处理- 命令行参数
argc/argv - 错误处理(
perror)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
// 检查参数个数
if (argc != 2) {
printf("Usage: %s <filename>\n", argv[0]);
return 1; // 参数错误,返回非0
}
// 打开文件(二进制模式)
FILE *p = fopen(argv[1], "rb");
if (p == NULL) {
perror("fopen file error");
return 1; // 文件打开失败,返回非0
}
int cnt = 0;
int ch; // 必须用 int 接收 fgetc()
// 逐字节读取,直到 EOF
while ((ch = fgetc(p)) != EOF) {
cnt++;
}
// 检查是否因错误导致循环结束
if (ferror(p)) {
printf("Error reading file.\n");
fclose(p);
return 1;
}
// 输出文件大小
printf("file [%s]: size = %d bytes\n", argv[1], cnt);
// 关闭文件
fclose(p);
return 0; // 成功执行
}
运行结果


浙公网安备 33010602011771号