代码之家  ›  专栏  ›  技术社区  ›  mczarnek

有没有可能知道从一个文件中读取的文本在C中有多少个字符?

  •  1
  • mczarnek  · 技术社区  · 5 年前

    我知道C++中,你可以检查字符串的长度,但是在C中,不是那么多。

    有没有可能知道文本文件的文件大小,知道文件中有多少个字符?

    是每个字符一个字节,还是其他头文件被秘密存储,不管我是否设置了它们?

    出于性能原因,我希望在遍历文件时避免对每个字符执行空检查。

    谢谢。

    2 回复  |  直到 5 年前
        1
  •  5
  •   M.M    5 年前

    您可以打开文件,读取所有字符并计数。

    除此之外,还没有一种完全可移植的方法来检查一个文件的长度——既不是在磁盘上,也不是在读取多少个字符。这对于文本文件和二进制文件是正确的。

    How do you determine the size of a file in C? 克服了一些陷阱。也许其中一个解决方案适合于运行代码的系统子集;或者您可能希望使用POSIX或操作系统调用。


    如评论所述;如果问题背后的意图是读取字符并动态处理它们,那么即使知道文件大小,您仍然需要检查读取错误,因为读取可能会失败。

        2
  •  0
  •   Alex Reynolds    5 年前

    字符(类型) char see CHAR_BIT ). A NUL character

    因此,如果使用ASCII文本文件,文件大小将是字节数,因此相当于字符数。

    如果你问一个人 如果在文件中,则确实需要查找NUL和其他扩展字符字节,并在此基础上计算字符串长度。您可能无法安全地假设只有一个NUL字符,并且它位于文件的末尾,这取决于该文件是如何生成的。也可以有新行和其他扩展字符,你想排除。你必须决定一个字符集,然后从这个字符集开始计算。

    此外,如果您使用的文件包含以Unicode编码的多字节字符,那么这将是一个不同的答案。你会用 different functions 使用多字节编码读取文本文件。

    因此,答案将取决于您的文本文件使用何种类型的编码,以及您是在计算字符长度还是字符串长度,这是两种不同的度量。

    推荐文章