练习:编写一个 C 程序,从命令行接收文件名,逐字节读取并计算文件的总字节数。

代码逻辑:

  1. 检查是否传入了一个文件名参数;
  2. 以二进制只读模式打开文件;
  3. fgetc() 逐个读取字节,直到遇到 EOF
  4. 统计读取的字节数,即文件大小;
  5. 输出结果
  • fopen / fclose
  • fgetc
  • EOF 处理
  • 命令行参数 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; // 成功执行
}

运行结果

n88DgNGjgZ

posted @ 2025-08-15 20:20  Yue+  阅读(11)  评论(0)    收藏  举报