C语言修行之文件操作
来源:互联网 发布:百度评论数据怎么更新 编辑:程序博客网 时间:2024/06/04 18:02
所谓流式文件是指:用字符串方式存储信息。如最常用的文本文件。
从存储方式上来看,文件可以分为文本文件和二进制文件。
下面将具体介绍文件的相关知识:
1.文件指针:定义文件指针的一般方式为:FILE *fp 其中fp为指针变量标识符,FILE必须大写。
2.文件的打开和关闭:
文件打开
模板:FILE *fp=fopen(const char *path,const char *mode)
if(fp==NULL)
printf("failed!");
else
//处理语句;
文件关闭:
int fclose(*fp)
关闭文件,如果成功返回0,否则关闭失败。
3.文件读写
char ch=fgetc(fp)
char ch=getc(f)
上述两个函数功能一样,从文件中读取数据,读取是按照字节进行的,系统自动分配一个指针,每次读取完毕,自动向后移动一个字节。
putc('a',fp)和fputc('a',fp)函数的功能也是一样的,向文件中加入一个字符。文件首先要打开,可以以写、读写、追加方式打开,如果以前两种方式打开,则原内容被覆盖。
字符串读写函数:fputs(字符串,文件指针)和fgets(字符数组名,n,文件指针).其中n是一个正整数,表示从文件中读出的字符串不超过n-1个,在读入的最后一个字符后追加结束标志“\0”。
测试代码:
#include<stdio.h>#include"stdlib.h"void main(){ FILE *fp; char ch; printf("Please input a string\n"); fp=fopen("D:\\a.txt","w"); if(fp==NULL) { printf("打开文件失败!\n"); exit(1); } ch=getchar();//文件写入 while(ch!='\n') { fputc(ch,fp); ch=getchar(); } fclose(fp); //文件读取 fp=fopen("D:\\a.txt","r"); ch=fgetc(fp); while(ch!=EOF) { putchar(ch); ch=fgetc(fp); } fclose(fp);}
4.文件格式化输入和输出
fscanf(fp,"%d,%d....",a,b,...)
fprintf(fp,"%d,%d....",a,b,...)
5.数据块的读写函数
fread和fwrite函数可以用来读写一组数据(一个数组元素,结构体变量)
模板:
fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)
其中,buffer是一个指针,在fread中,表示存放输入数据的首地址,在fwrite中,表示存放输出数据的首地址。size表示块的大小,count表示要读写的数据块的块数。fp表示文件指针。
6.字的输入输出函数,一次读写一个word。
int getw(FILE *fp);如果读取成功返回读取信息,否则返回EOF。
int putw(int w,FILE *fp);如果成功,写入w,否则返回EOF。
7.文件删除
使用remove(文件名字)删除文件,如果成功返回0.
#include<stdio.h>void main(){ char address[20]; printf("please input the address of the file you want to delete:"); gets(address); if(remove(address)==0) printf("success!\n"); else printf("failed");}8.重命名文件
使用rename(旧文件名,新文件名)函数进行文件重新命名。程序实例如下:
#include<stdio.h>void main(){ char oldaddress[20]; char newaddress[20]; printf("please input the oldaddress of the file :"); gets(oldaddress); printf("please input the newaddress you want to rename:"); gets(newaddress); if(rename(oldaddress,newaddress)==0) printf("success!\n"); else printf("failed");}注意:更名前后文件的路径是处于同一目录下,心文件名不可以和文件路径下的其他文件重命。
9.实现文件复制
学了文件的打开,操作之后,现在实现对文件的复制,实例如下:
#include<stdio.h>void main(){ char yuanfile[30]; char xinfile[30]; FILE *fp1; FILE *fp2; char ch; printf("please input the name of yuanfile:"); gets(yuanfile); printf("please input the name of xinfile:"); gets(xinfile); if((fp1=fopen(xinfile,"w"))==NULL) printf("failed!\n"); if((fp2=fopen(yuanfile,"r"))==NULL) printf("failed!\n"); ch=fgetc(fp2); while(ch!=EOF) { fputc(ch,fp1); ch=fgetc(fp2); } fclose(fp2); fclose(fp1);
}
- C语言修行之文件操作
- C++/MFC修行之路(1) 文件操作
- C语言修行之位运算
- C语言修行之位域
- C语言之文件操作
- C语言之文件操作
- C语言之文件操作
- C语言之文件操作
- c语言之文件操作
- C语言之文件操作
- c语言入门教程之 文件操作基本常识
- C语言文件操作之fgets()
- c语言之文件操作练习
- C语言复习之文件的操作
- C语言标准库之文件操作
- ----------------Linux下C语言之文件操作-----------------
- C语言文件操作之fgets()
- C语言文件操作之EOF解析
- POJ3982《序列》方法:高精度
- RC加密解密算法C源代码
- android应用 小试牛刀 开发自己的应用程序就是这么简单
- 深入浅出Netty之二 server启动
- 深度解析Java内存的原型
- C语言修行之文件操作
- 和我一起学 Selenium WebDriver(3)——基础篇
- [CF]276E. Little Girl and Problem on Trees 树状数组
- google翻译逆天了逆天了(搞笑版)
- android客户端加密代码
- spring mvc中的拦截器小结
- 在社会上闯荡必须要牢记的 (第六条和第七条写得真是太绝了)
- 总结C++设计学习
- 这才叫赚钱:月薪10000的程序员给我上了震撼一课!~