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);