文件的打开与封锁
首先要界说一个文件指针范例,名目为 FILE *文件指针名; ;
FILE *fp; //fp就是界说的文件指针
●打开文件fopen()函数,名目: fp = fopen("文件名", "打开方法");
fp = fopen("c:\\myfile", "r"); //打开方法下文会讲到
文件名中不答允直接利用路径描写符 "\",必需用转义字符的形式 "\\"。"\\" 中第一个 "\" 是转义字符,第二个暗示路径描写符。
●封锁文件fcolse()函数,名目: fclose(文件指针);
fclose(fp);
成果:正常完成封锁文件操纵时fclose返回0,不然返回EOF(值为-1),暗示有错误产生。
●打开文件的方法:
共有12种,由r(read), w(write), a(append), b(binary), +(read/write)五个字符组合而成。
"r", "w", "a", "r+", "w+", "a+" :这六种打开文本文件
"rb", "wb", "ab", "rb+", "wb+", "ab+" :这六种打开二进制文件
"r" | 打开一个文本文件,可以读取文件 |
"w" | 打开一个文本文件,可以写入文件,先将文件的长度截为0。假如该文件不存在则先建设 |
"a" | 打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,假如该文件不存在则先建设 |
"r+" | 打开一个文本文件,可以举办更新(读取和写入),也即可以读取和写入文件 |
"w+" | 打开一个文本文件,可以举办更新(读取和写入),假如该文件存在则首先将其长度截为0,假如该文件不存在则先建设 |
"a+" | 打开一个文本文件,可以举办更新(读取和写入),向已有文件的尾部追加内容,假如该文件不存在则先建设;可以读取整个文件,但写入时只能追加内容。 |
"rb", "wb", "ab", "rb+", "wb+", "ab+", "r+b", "w+b", "a+b" | 与前面的模式相似,只是利用二进制而非文本模式打开文件 |
留意:假如用"w"模式打开任意一个文件,文件内容将删除,以便措施以一个空文件开始操纵。
●文件竣事的鉴定feof()函数,名目: feof(文件指针)
这里举一个例子辅佐领略:
while(!feof(fp)) //我们已在文件的末端加上竣事符号-1 { c = fgetc(fp); print("当到文件尾时,此段文字不显示"); } //此段措施的寄义是:当为!feof(fp)为1,从当前位置读入一个字节的数据赋给字符型变量c,指当碰着文件竣事符号时,feof(fp)的值为1,feof(fp)为0,轮回竣事
feof()函数成果:测试文件指针所指向的文锦啊内部读写位置指针是否达到文件尾。当文件竣事时返回1,不然返回0。
文件的读写
1.字符,字符串的读写
写字符函数fputc,成果:把一个字符写入此盘文件中,若输出乐成,则返回输出的字符,不然返回EOF。名目:
fputc(ch, fp); //将字符ch的值输出到fp所指向的文件中
ch:要输出的字符,可以是字符常量,也可以是字符变量。
读字符函数fgetc,成果:从指定文件读入一个字符,该文件必需是以读或读写方法打开的,若读取乐成返回读取的字符,不然返回EOF。名目:
ch = fgetc(fp); //读取乐成返回字符赋值给ch
写字符串函数fputs,名目: fputs("字符串", 文件指针); 成果:向指定的文件写入一串字符,写入乐成返回0,不然返回非0值。
fputs("Welcome to my blog", fp);
留意:fputs函数将写入文件的字符串中的空字符去掉,ptus函数将空字符换成换行字符输出。
读字符串函数,名目: fgets(字符串, n, fp); 成果:从fp指向的文件读入n-1个字符存放第一个参数中,假如碰着换行符或EOF,则竣事。
fgets(str, n, fp); //str 为字符数组。从fp指向的文件读入n-1个字符存放到str数组中
留意:读入字符串后在最后加一个 ‘\0’ 字符,fgets函数返回的返回值为字符串的首地点。
2.数据块的读写
数据块写文件函数fwrite(),名目:
fwrite(buffer, size, count, fp);
buffer:是一个指针,用来指出带输出数据的地点。
size:每次要写的字节数
count:写入几多个size巨细的数据项
留意:完成写操纵(fwrite())后必需封锁文件(fclose())
数据块的读文件函数fread(),名目:
fread(buffer, size, count, fp);
count:读入几多个size巨细的数据项
3.名目化读/写文件函数
读文件fprintf(),名目: fprintf(文件指针,"名目节制",输出列表);
fprintf(fp,"%d, %d",a, b); //将a,b写入fp指向的文件中
留意:fprintf()函数老是将输出项在内存中的暗示形式按指定的名目转换成字符串形式,再写入到指定的文件中。
#p#分页标题#e#
写文件fscanf(),名目: fscanf(文件指针,"名目节制",地点列表);
fprintf(fp,"%d, %d",&a, &b); //将fp指向的文件中的数据读出并存放于a,b
留意:fscanf()函数从文件中读出的数据必然是按字符串形式(文本形式)存在的。
文件定位
●rewind()函数,名目: rewind(文件指针); 成果:使文件指针的读写位置从头返回到文件的开头。
rewind(fp);
●fseek()函数,名目: fseek(文件指针, 位移量w, 起始点s); 成果:使文件指针移到距起始点偏移w个字节处。
fseek(fp, 2, 0); //使文件指针移到距起始点0偏移2个字节数
w:当w为正数时暗示向文件尾偏向移动,为负数时暗示向文件头移动,为0暗示不移动。 s:可觉得0,1,2;s=0暗示文件头,s=0暗示当前位置,s=0暗示文件末端。 ●ftell()函数,名目: ftell(文件指针); 成果:获得流式文件中的当前位置,用相对与文件开头的位移量来暗示。若ftell()函数返回-1L暗示堕落。
i = ftell(fp); //存放当前位置给变量i if(i == -1L) printf("error\n"); //若挪用的函数堕落(如不存在此文件),则输出ERROR
文件的检测
常用的文件检测函数有两个 ferror()和clearerr() ferror()函数,成果:若ferror()函数的返回值为0,则暗示未堕落,非0暗示堕落。名目:
ferror(fp)
clearerr()函数,成果:使文件错误符号和文件竣事符号置为0。名目:
clearerr(fp)
来历:http://www.cnblogs.com/libra-yong/p/6250133.html