gpt4 book ai didi

c - 我怎么知道文本文件是否为空?(在C中)

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:30 25 4
gpt4 key购买 nike

我试图在 C 中检测文本文件是否为空。(值初始化为 NULL)每当首先读取值(使用 fscanf)时,它总是返回文件为零,即使它的值为“0”或“空”。

如何知道目标文本文件是否为空?(即使首字母为“0”也要区分)

最佳答案

如果根据 fopen(filename, "r") 成功打开文件进行读取,您可以通过这种方式在任何读取操作之前验证文件是否为空:

int is_empty_file(FILE *fp) {
int c = getc(fp);
if (c == EOF)
return 1;
ungetc(c, fp);
return 0;
}

ungetc() 保证至少对一个字符有效。如果文件为空或由于 I/O 错误而无法读取,上述函数将返回 1。您可以通过测试 ferr(fp)feof(fp) 来判断。

如果文件是与设备或终端关联的流,则测试代码将阻塞,直到至少可以读取一个字节,或者发出文件结束信号。

如果文件是常规文件,您还可以使用系统特定的 API 来确定文件大小,例如 statlstatfstat(在 Posix 系统上)。

关于c - 我怎么知道文本文件是否为空?(在C中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40763984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com