#include<stdio.h> /************************************************************************/ // FILE *fopen(const char *filename,const char *mode) // FILE *freopen(const char *filename,const char *mode,FILE *stream)以指定模式打开文件,并将文件关联到stream流中 /* r 打开文件用于读 w 创文本用于写,如果存在文本,则删除文本内容,然后写 a 打开文本或者创建文本用些追加写 r+打开文本用于更新,即读和写 w+ 打开文本用于更新,并删除已经存在的内容 a+ 打开文本用于更新,写文件追加到末尾 后3中更新模式,支持对同一文件进行读写,在同读写交叉的操作,需要用fflush来刷新文件内容 rb w+b表示对二进制文件进行操作 //将文件读/写指针移到距文件头100字节处 fseek( fp, 100L, SEEK_SET ); //将文件读/写指针从当前位置向文件尾方向移50字节 fseek( fp, 50L, SEEK_CUR ); //将文件读/写指针从当前位置向文件头方向移50字节 fseek( fp, -50L, SEEK_CUR ); //将文件读/写指针从文件尾回移100字节 fseek( fp, -100L, SEEK_END ); */ /************************************************************************/ int main(){ FILE *fp; int re =1; int re2 = 10; char c ; char str[50]; int iFC = -1; int cnt = 0; memset(str,0x00,sizeof(str)); fp = fopen("d:\t2.txt","a+"); //文件按行读取 while (!feof(fp)) { cnt++; printf("第%d行 ",cnt); /**原型是:char *fgets(char *s, int n, FILE *stream);从文件指针stream中读取n-1个字符,存到以s为起始地址的空间里,直到读完一行,如果成功则返回s的指针,否 则返回NULL。*/ fgets(str,100,fp); printf("%s ",str); if (cnt==1) { fgets(str,100,fp); printf("%s",str); break; } } printf("***************** "); fseek( fp, -2L, SEEK_END ); c = getc(fp); printf("fp = [%c] ",c); printf("***************** "); // //末尾插入e // fseek( fp, 0L, SEEK_END ); // putc('e',fp); //单个字符打印内容 fseek( fp, 0L, SEEK_SET ); c = getc(fp); while(c != EOF){ printf("fp = [%c] ",c); c = getc(fp); //char是5多打印一次 if(c == '5'){ fseek(fp,-1L,SEEK_CUR); printf("fp = [%c] ",c); fseek(fp,1L,SEEK_CUR); } } //从头开始读取5个字节(实取4个) fseek( fp, 0L, SEEK_SET); fgets(str,59,fp);//sizeof is 5, strlen is 4 because of ' ' printf("str--------> = [%s] ",str); //从头开始读取6个字节 fseek( fp, 0L, SEEK_SET); fread( str, 3, 2, fp ); //参数3 size_t表示每个数据项包含的字节数 printf("str = [%s] ",str); //文件尾写入endEND fseek( fp, 0L, SEEK_END); fputs("end",fp); fseek( fp, 0L, SEEK_CUR); fwrite("END",3,1,fp); fseek( fp, 0L, SEEK_END); // int getline(char s[],int lim) // fp->getline(str,0);
//文件关闭 iFC = fclose(fp); if (iFC) { printf("Failed to close file!"); } }