thunderplatform.exe:C语言例题中的一句不明白,麻烦高手解释一下,谢谢

来源:百度文库 编辑:中科新闻网 时间:2024/05/01 06:50:26
经常在书上看到这样两个判断!但不理解是什么意思:
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");



fread(&stu[i],sizeof(struct student),1,fp)!=0

请问一下这两句有什么作用,什么情况下用!谢谢
解释一下为什么!=1和!=0就行了,这是作什么用的

size_t fread(void *buffer,size_t num_bytes,size_t count,FILE *fp);
size_t fwrite(const void *buffer,size_t num_bytes,size_t count,FILE *fp);
对于函数fread()而言,变元buffer是存放所读入数据的内存域指针,而对于fwrite()函数而言,buffer是写入到那个文件的信息的指针.变元count的值确定将读写多少项,而每项的长度是由num_bytea决定的,变元num_bytes的类型是size_t,一般代表无符号整数.函数最后的变元fp是指针变量,是指向原先打开的文件.
函数fread()和fwrite()都有返回值.fread()返回读入的项数,如果出错或者达到文件的尾部时,返回值可能会小于count,fwrite()返回写出的项数,如果不出错,该值将等于count.

size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream)
fread从stream中读取最多nobj个对象到数组ptr中,每个对象的大小为size。fread返回已经读取的对象个数;这个数值也许会小于你需要的读取个数。必须用feof和ferror判断状态。
feof == 0

size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream)
fwirte从数组ptr向stream写入nobj个对象,每个对象大小为size。它返回写入对象的个数,如果小于nobj,说明发生错误。