问题描述
- c语言怎么判断文件为空啊,如果文件里没有数据,就会报错
-
while(!feof(fp)) { s=(Tx *)malloc(sizeof (Tx)); fscanf(fp,"%d %s %d ",&s->id,&s->name,&s->tel); printf("%d%s%d ",s->id,s->name,s->tel); s->next=a->next; a->next=s; } printf("Successful Read!"); 如果文件中没有数据就会报错,怎么处理 feof()不是可以判断的吗
解决方案
解决方案二:
先看报错的地方,然后再加判断等避免
解决方案三:
feof是判断是否到文件末尾结束EOF位置
你说里面有没数据的判断,如果有空格呢,肯定不行吧
可以试试stat函数
int stat(const char path, struct stat *buf)
struct stat {
dev_t st_dev; / ID of device containing file /
ino_t st_ino; / inode number /
mode_t st_mode; / protection /
nlink_t st_nlink; / number of hard links /
uid_t st_uid; / user ID of owner /
gid_t st_gid; / group ID of owner /
dev_t st_rdev; / device ID (if special file) /
off_t st_size; / total size, in bytes /
blksize_t st_blksize; / blocksize for filesystem I/O /
blkcnt_t st_blocks; / number of 512B blocks allocated /
time_t st_atime; / time of last access /
time_t st_mtime; / time of last modification /
time_t st_ctime; / time of last status change */
};
解决方案四:
应该是可以的,你确定是这里报错?把上下文贴出来看看。
解决方案五:
我的理解是这样的,fscanf,最好读二进制文件,文本的使用fread函数。
feof判断指针是否达到文件尾部,没有到尾部,中间的数据不够长度也会出错。
解决方案六:
试试这个
OFSTRUCT ReOpenBuff;
HFILE handle = OpenFile("D:1.txt", &ReOpenBuff, GENERIC_READ );
DWORD dwSize = GetFileSize ( (HANDLE)handle, NULL);