C语言标准路为我们提供了文件操作函数:
包含:fopen()/fclose() //文件打开与关闭函数;(参数与返回类型省略)
fgetc()/fputc() //从流中获取字符,向文件流中写入字符;
getc()/putc() //与fgetc()/fputc()等价,不同的是,当getc()/putc()定义为宏时,可能多次计算stream的值;
getchar()/putchar() //与上述两种类似;
ungetc() //将字符转化为unsigned char 类型写回到流中;
fscanf()/fprintf() //用于文件的格式化输入输出;
fread()/fwrite() //从流中读/写特定数目的特定单位大小的对象;
fgets()/fputs() //从文件流中获取字符串,或将字符串写入流中;
其中char* fgets(char*s,int size,FILE*fp)最多将size-1个字符读入s中,s的第size个存储空间保留‘\0’,因而s中保留的为字符串,对于文件,如遇到换行符,读取结束。即:当size大于文件一行的字符数时,fgets()运行一次读取文件中的一行,否则,一次读取特定数目的字符。(在实际中,当s由动态分配获得时,读取失败 ,只能采取静态分配这是为什么,求解?)。
文件定位函数:
int fseek(FILE*stream,long offset,int orign)
对于二进制流,被设置为origin开始的第offset个字符处,origin:SEEK_SET,SEEK_CUR,SEEK_END;
对于文本流,offset必须设置为0,获是ftell()的返回值(此时origin必须设置为SEEK_SET;
int ftell(FILE*stream) //返回stream流的当前文件位置;
void rewind() //即:fseek(fp,0L,SEEK_SET);clearerr(fp);
int fgetpos(FILE*stream,fpos_t *ptr) //获取流的当前位置,记录在*ptr中
int fsetpos(FILE*stream,const fpos_t *ptr) //将流的当前位置设置为*ptr中的位置
int feof(fp) 文件是否到文件结束符,若是,则返回非0值,否则返回0。
例子:从文件name1中查找字符串,并替换为另一个字符串,结果保存在name2文件中
1、替换字符串中的特定字符串