【问题标题】:How to count number of bytes in a file using C?如何使用 C 计算文件中的字节数?
【发布时间】:2014-09-01 22:56:53
【问题描述】:

如何使用 C 计算文件的字节数?

假设下面的文件中包含一些代码(数据)。字数统计(wc)程序如何计算指定文件的确切字节数?

例如,如果我们有以下文件:

#include<stdio.h>

int main(void) {
    printf("helloworld!");
}

我想知道如何创建一个可以计算该文件中字节数的程序。

这个文件的字节数是 64 使用 Linux 字数 (wc)

cat helloworld.cpp | wc -c
64

【问题讨论】:

  • 看看 stat() 和家庭。
  • getchar() 函数(宏)从标准输入读取一个字节。计算在获得 EOF 之前可以调用它多少次,这会告诉您标准输入流中有多少字节。更通用的代码版本将有一个函数int byte_count(FILE *fp) 来完成这项工作。注意非常大的文件(2 GiB 或更多);您可能需要与 int 不同的类型作为计数的返回值。如果你知道文件名,可以考虑使用stat()

标签: c algorithm wc


【解决方案1】:

摘自stat(2) 示例

char filename[] = "helloworld.cpp";
struct stat sb;

if (stat(filename, &sb) == -1) {
    perror("stat");
}
else {
    printf("File size:                %lld bytes\n",
           (long long) sb.st_size);
}

您也可以使用getc() 函数

int bytes;
for(bytes = 0; getc(stdin) != EOF; ++bytes);
printf("File size:                %d bytes\n",bytes);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2017-02-16
    • 2020-09-10
    • 1970-01-01
    相关资源
    最近更新 更多