【问题标题】:Counting the number of characters from a file without using fopen()不使用 fopen() 计算文件中的字符数
【发布时间】:2015-09-18 13:29:25
【问题描述】:

我想用 C 计算文件中的字符数。 我很好奇我是否使用open() 而不是fopen() 打开文件,有什么函数可以用来计算任何字符吗? open() 接受参数,第一个是 char 数组。

假设如果fopen() 没有被使用,那么fscanf() 也没有被使用。

我是 C 的新手。只是好奇它是如何工作的。

【问题讨论】:

  • 几乎在任何地方,您都可以在不打开文件的情况下获取以字节为单位的文件大小。但是:那是字节,而不是字符。你真的想要角色吗?哪种编码?
  • open 函数通常比fopen 和朋友低级别,并且在 POSIX 系统(例如 Linux 和 Mac OSX)上是本机系统调用(因此被更高级别使用级别fopen)。我建议您阅读an open manual page 以了解更多信息,并查看相关功能(请参阅链接页面的底部)。如果您稍微搜索一下,整个互联网上应该也有很多示例和教程。
  • @deviantfan 我想我需要获取字节。我以为它们是一样的……有什么不同吗?
  • @JiajuShen 想想常见的UTF-8 encoding,其中只有ASCII character set 的低127 个字符适合单个字节。或者,如果文件使用固定宽度的多字节编码,例如UTF-32。那么单个字符可以(或将)是多个字节。
  • 如果你只需要文件的字节数,就stat()吧。

标签: c file input


【解决方案1】:

如果您正在使用 POSIX.1-2001 兼容系统,您可以使用statfstat,它们返回一个struct stat,其中有一个字段st_size 以字节为单位。在 POSIX 中 1 字符 = 1 字节 = 8 位。

如果您的系统不符合 POSIX.1,您可以使用 open 并重复 reads 来查找大小。

【讨论】:

    猜你喜欢
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多