ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

【c++】c语言入门到c++使用高手: c语言入门之文件(二)

【c++】c语言入门到c++使用高手: c语言入门之文件(二) 第十二章 文件第二节 文件的开,关,读,写实战操练1. 文件的打开文件在读或写之前必须要打开在读或写之后必须要关闭fopen文件打开函数fopen函数的调用方式FILE *fp; // FILE是个结构fp是指向结构FILE的指针变量 fp fopen(文件名 使用的文件的方式) //文件名和使用文件的方式都是字符串“” fp fopen(a.txt, r); //打开a.txt文件, 使用的打开方式为只读 // fp现在就指向了打开的a.txt文件 // sizeof(FILE) if(fp NULL){ 文件打开失败 }通过fopen语句告诉系统三个信息需要打开的文件名使用文件的方式让哪个指针变量指向被打开的文件,这里是fp这个指针变量文件有个位置指针fgetc2. 文件的关闭只有fopen成功的文件才需要关闭关闭文件的原因释放该文件占用的内存单元, 要养成资源用完要及时释放的好习惯防止往文件中写内容时,文件内容写入不全(如果缓冲区没满,没有写入到磁盘,如果程序关闭,会导致文件内容写入不全),关闭文件的动作会触发系统把缓冲区的数据立即写入到磁盘上fclose文件关闭函数fclose函数的调用方式:// fclose(文件指针)if(fp!NULL){fclose(fp);// fp就是fopen()的返回值}3. 文件的读写简单讲fputc和fgetc函数fputc():该函数把一个字符写到磁盘文件上去,一般形式为fputc(ch,fp);//ch就是这个字符,如果fputc失败,会返回EOF,如果成功,返回值就是写入文件的那个字符的ascii码值EOF (End of file) // #define EOF (-1)#includeiostream#includecstringintmain(intargc,char*argv[]){FILE*fp;fpfopen(test.txt,w);//打开只写文件,如果文件存在,文件内容清空,如果文件不存在,则创建文件if(fpNULL){printf(文件打开失败!\n);}else{// 文件打开成功charrecofputc(a,fp);if(recoEOF){//写入失败}else{charrecofputc(b,fp);}}if(fp!NULL){fclose(fp);// fp就是fopen()的返回值}return0;}fgetc: 从指定文件读入一个字符调用形式: char reco fgetc(fp)如果执行成功,返回读入的字符,如果读入失败,或者整个文件读到末尾,返回EOF#includeiostream#includecstringintmain(intargc,char*argv[]){FILE*fp;// 文件刚打开,文件位置位于当前文件的头部// 以文本方式打开数据fpfopen(test.txt,r);if(fpNULL){printf(文件打开失败!\n);}else{// 文件打开成功// 读出一个字符,每读出一个字符,指针向下移一个字符charrecofgetc(fp);// 判断文件是否读入结束while(reco!EOF){putchar(reco);recofgetc(fp);}}if(fp!NULL){fclose(fp);// fp就是fopen()的返回值}return0;}feof(fp); //文件是否结束,如果文件结束,feof(fp)返回真(1), 如果文件没有结束,feof(fp)返回假(0)4. 文件读写实战操练商业代码,需要非常严谨#includeiostream#includecstringintmain(intargc,char*argv[]){FILE*fpfopen(test.txt,r);// if(fp NULL)if(!fp){printf(文件打开失败!\n);}else{// 文件打开成功charLineBuff[1024];//足以容纳一行的内容while(!feof(fp)){LineBuff[0]0;// \0// 每次读取一行if(fgets(LineBuff,sizeof(LineBuff)-1,fp)NULL){continue;}if(LineBuff[0]\0){continue;}lblprocstring:// 读到了实际内容if(strlen(LineBuff)0){// 如果末尾是换行符或者回车符if(LineBuff[strlen(LineBuff)-1]10||LineBuff[strlen(LineBuff)-1]13){LineBuff[strlen(LineBuff)-1]\0;gotolblprocstring;}}if(strlen(LineBuff)0){continue;}printf(%s\n,LineBuff);}}if(fp!NULL){fclose(fp);// fp就是fopen()的返回值}return0;}
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表