c语言怎么判断文件为空啊,如果文件里没有数据,就会报错

    while(!feof(fp))
    {
        s=(Tx *)malloc(sizeof (Tx)); 
        fscanf(fp,"%d %s %d\n",&s->id,&s->name,&s->tel);
        printf("%d%s%d\n",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);