如何检查文本文件是否有写入内容。我试过了:
LOGIC checkfile(char * filename)
{
FILE *pf;
pf=fopen(filename,"wt");
fseek(pf,0,SEEK_END);
if(ftell(pf)==0)
printf("empty");
}
此函数每次都返回空,即使在我的文本文件中,我也只写了几个单词或数字。
答案 0 :(得分:3)
问题是你打开文件进行写作。执行此操作时,文件中的所有内容都将丢失,文件的长度将被截断为0.
所以你需要打开文件进行阅读。查看文件是否为空的最简单方法是尝试使用fgetc
读取第一个字符。如果fgetc
返回EOF,则该文件为空。
答案 1 :(得分:2)
首先:不要打开要写的文件!
第二:要了解C中的文件状态,可以使用sys headear文件中的fstat!
您可以使用 struct stat 来使用此功能
这是一个简单的例子:
#include <sys/stat.h>
int main(void)
{
int fields = 0;
int size = 0;
// Open the file test.txt through open()
// Note that since the call to open directly gives
// integer file descriptor so we used open here.
// One can also use fopen() that returns FILE*
// object. Use fileno() in that case to convert
// FILE* object into the integer file descriptor
if(fields = open(file_path, "r")){
struct stat buf;
fstat(fields, &buf);
size = (int)buf.st_size;
}
printf("size of file is %d", size);
return 0;
}
注意:我只包含一个与fstat相关的头文件。您可以自己添加其他头文件
答案 2 :(得分:1)
如何使用fscanf
读取文件,并检查是否实际读取了某些内容?
FILE *fp;
char buff[255] = "";
fp = fopen(filename, "r");
fscanf(fp, "%s", buff);
if (!*buff)
printf("Empty\n");
else
printf("%s\n", buff);
fclose(fp);