(fwrite(&stud[i],sizeof(struct student),1,fp)!=1在C语言中是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(fwrite(&stud[i],sizeof(struct student),1,fp)!=1在C语言中是啥意思相关的知识,希望对你有一定的参考价值。
fwrite(&stud[i],sizeof(structstudent_type),1,fp)的意思是
将&stud[i]这个指针所指向的内容输出到fp这个文件中,每次输出的数据单元占sizeof(struct
student_type)个字节,总共输出1次
如果输出正确,应该是返回1的,因为fwrite返回值是返回正确输出了几个数据单元
if(fwrite(&stud[i],sizeof(struct
student_type),1,fp)!=1)的意思就是“如果没有将内容正确的写入fp中” 参考技术A size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );将缓冲区*buffer中的内容写到流*stream中,每块的大小为size,块数为count,返回值为实际写出块数。 参考技术B 就是如果没成功写入一个数据块 ,外面是不是还有个if什么的
fwite返回值为成功写入的数据块的数量
fwrite & fread 的使用
每一次切换文件操作模式必须调用fclose关闭文件。
如果直接切换操作模式,文件将损坏(出现乱码)或操作失败。
在调用了fclose时,作为参数的文件指针将被回收,必须再次定义,因此最好将功能封装。
存数组时,fwrite参数size_t size可使用sizeof(buffer[0]),size_t count可使用sizeof(buffer)/sizeof(buffer[0])。
fread返回了一个整数,是其成功读取的数据数目,最大值是其参数size_t count。
使用循环顺序读取时while(!feof(stream)),fread在一次读取不完整后触发文件尾条件。
一个例子:
#include<iostream> #include<fstream> int main() using std::cin; using std::cout; using std::endl; cout << "Hello, I am a C++ test program." << endl; cin.get(); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ FILE* _f0; _f0 = fopen("f0.txt", "wb"); if (_f0 != NULL) cout << "I created a file named \\"f0\\"." << endl; cin.get(); int buf[8]; cout << "size of buf[0] = " << sizeof(buf[0]) << endl << "size of buf = " << sizeof(buf) << endl; for (int i = 0; i < 8; i++) buf[i] = ‘0‘ + i; fwrite(buf, sizeof(buf[0]), sizeof(buf)/sizeof(buf[0]), _f0); cout << "Then put some numbers into this file." << endl; cin.get(); cout << "Read out these numbers:" << endl; fclose(_f0); FILE* _f1 = fopen("f0.txt", "rb"); cout << "f0 = " << _f1 << endl; int i = 0; int R = 0; int n = 0; while (!feof(_f1)) n = fread(&R, sizeof(R), 1, _f1); cout << "n = " << n << " buf[" << i << "] = " << R << endl; i++; fclose(_f1); cout << "At last, add a number to the file." << endl; FILE* _f2 = fopen("f0.txt", "ab"); R = ‘8‘; fwrite(&R, sizeof(R), 1, _f2); fclose(_f2); else cout << "File creating failed." << endl; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cout << endl << "Press enter to end."; cin.get(); return 0;
以上是关于(fwrite(&stud[i],sizeof(struct student),1,fp)!=1在C语言中是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
fwrite(&stud[i],sizeof(student_type),1,fp)!=1
fwrite(&st[i],sizeof(struct staff),1,fp)!=1啥意思