一文件的打开和关闭
1:打开
FILE *p;
p=fopen(文件名,使用文件方式);
文件名表示一个路径,如:c:\\text.txt
使用文件的方式:
r(read)--->读 w(write)--->写
t(txt) -->文本文件
b(banary)-->二进制文件
+:---->读和写
a(append)--->追加(java中的StringBuffer里面就封装了append这个方法)
2:文件的关闭
fclose(文件指针)
#include
#include
void main(){
FILE *f;
//文件如果打开失败,则退出程序
if((f=fopen("c:\\myfile.txt","w"))==NULL){
printf("文件打开失败");
exit(0);
}
fclose(f);
}
二:文件的写
1:字符写入函数fputc(字符量,文件指针); //成功,则返回一个向文件写的内容,否则为0
2:字符串写入函数fputs(字符串,文件指针);
3:格式化写入 fprintf(文件指针,格式化字符串,输出列表);
4: 写入数据块函数fwrite()
//输入五行字符串,将其写入到c:\\myfile.txt
#include
#include
void main(){
//FILE 一定是大写 NULL也一定是大写
FILE *f;
char ch[80],*p=ch;
int n;
if((f=fopen("c:\\myfile.txt","w"))==NULL){
printf("文件打开失败");
exit(0);
}
printf("请输入字符串\n");
for(n=1;n<=5;n++){
gets(p);
//用字符的方式写入
//while(*p!='\0'){
// fputc(*p,f);
// p++;
// }
//用字符串的方式写入
fputs(p,f);
fputc('\n',f);
}
fclose(f);
}
//这个程序是以每行5个数据输入到文件c:\\myfile.txt当中
#include
#include
//给a数组赋值
void getdata(int a[],int n){
for(int i=0;i
a[i]=(rand()�)+10;//产生10到99的随机数
}
}
void putdata(int a[],int n){
FILE *f;
if((f=fopen("c:\\myfile.txt","w"))==NULL){
printf("文件打开失败");
exit(0);
}
for(int i=0;i
fprintf(f,"]",a[i]);
if((i+1)%5==0)
fprintf(f,"\n");
}
}
void main(){
int a[20];
getdata(a,20);
putdata(a,20);
}
//从键盘输入5个学生数据,以二进制写入到文件中
#include
#include
#include
struct student{
char name[10];
int age;
}stu[5],*pp;
void main(){
FILE *f;
int i;
if((f=fopen("c:\\myfile.dat","wb"))==NULL){
printf("文件打开失败");
exit(0);
}
printf("请输入学生的数据\n");
pp=stu;
for(i=0;i<5;i++,pp++){
scanf("%s%d",pp->name,&pp->age);
}
printf("stu的大小是:%d\n",sizeof(stu));
fwrite(pp,sizeof(stu),5,f);
fclose(f);
}
三:文件的读
1:字符的读fgetc(文件指针) 返回一个字符
2:fgets(字符数组名,n,文件指针);
fgets(str,11,fp);//从文件读取一个长度11字符串放到str中
3:格式化读取函数fprintf(文件指针,格式字符串,输出列表);
fprintf(fp,"%d%s",j,ch);
4:数据块读函数fread(结构体等的指针,sizeof(struct stu),2,文件的指针);