最近学习了一些和文件相关的函数,用起来还是蛮有用的,今天在这里整理一下:
fopen()和fclose()
fopen()和fclose()分别是打开文件和关闭文件,其中fopen()的用法如下:
FILE *fopen(const char *fname,const char *mode);
参数一: fname-----表示文件名
参数二: mode------打开方式
返回 FILE 指针,如果返回失败就返回null
注:打开方式中: ‘r’---------- 以只读的方式打开文件
‘r+’---------与’r’的区别是,增加了写
‘rb’--------- 以读的方式打开一个二进制文件
‘rb+’--------与’rb’的区别是,增加了写
'w'---------------以写的方式创建一个文本文件
‘w+’-------------与'w'的区别是,增加了读
‘wb’---------- 以写的方式打开一个二进制文件
‘wb+’--------- 与'wb'的区别是,增加了读
‘a’--------------- 以尾部追加的方式打开一个文本文件
‘a+’--------------与'a'的区别是,增加了读
'ab'--------------以尾部追加的方式打开一个二进制文件
'ab+'-----------与'ab'的区别是,增加了读
fclose()的用法如下:
int fclose(FILE *stream);
fgetc()和fputc()
fgetc()表示从文件中读取一个字符,fputc()表示向文件中写入字符。下面来看下各自的用法:
int fgetc(FILE *stream);
返回值:成功时返回读到的字符,返回的是int类型(实际上是字符),失败或读到文件尾,返回EOF(就是-1).
int fputc(int character , FILE *stream);
返回值:成功时返回int型的character,失败时,返回EOF;
我们通过将文件一中的内容复制到文件二中去这样一个实例来熟悉其用法:
#include<stdio.h>
int main(void){
FILE *file1;
FILE *file2;
char a;
//打开文件
file1=fopen("fwrit.c","r");
file2=fopen("fwrit2.c","w");
if(!file1||!file2){
printf("打开文件失败!");
return 1;
}
while(1){
//读取file1中的文件
a=fgetc(file1);
if(a==EOF){
break;
}
//把从file1中读取的字符写入file2中
fputc(a,file2);
}
fclose(file1);
fclose(file2);
return 0;
}
fgets()和fputs()
fgets()表示读取一行字符串,fputc()表示向文件中写入字符串,用法如下:
char *fgets(char *str,int num ,FILE *stream);
参数:num:最多读取num-1个字符,或者遇到文件结束符EOF为止;
返回值:读取失败时,返回NULL;读取成功时,返回str;
int fputs(const char *str,FILE *stream);
返回值:读取失败时,返回NULL;读取成功时,返回str;
把文件fput.c拷贝到新文件fpu.c中,具体的程序如下:
#include<stdio.h>
int main(void){
FILE *file1;
FILE *file2;
char *a;
char str[100];
file1=fopen("fput.c","r");//只打开文本文件
file2=fopen("fpu.c","w");
if(!file1||!file2){
printf("文件打开失败!");
}
while(1){
//读一行
a=fgets(str,sizeof(str),file1);
if(a==EOF+1){
break;
}
//打印一行
fputs(str,file2);
}
}
fscanf()和fprintf()
fscanf()表示格式化读取文件中数据,fprintf()表示问文中写格式化数据。用法定义如下:
int fscanf(FILE *stream,const char *format,…);
返回值:成功时,返回实际读取的数据个数;
失败时,返回EOF;
int fprintf(FILE *stream,const char *format,…);
-
让用户输入学员姓名、年龄, 并把这些信息按照如下格式保存到文件,程序如下:
#include <stdio.h> int main(void){ char name[32]; int age; char c; FILE *file; //打开文件 file=fopen("ope.txt","w"); if(!file){ printf("文件打开失败!"); return 1; } while(1){ //用户输入学员姓名、年龄 printf("请输入学员姓名:"); scanf("%s",&name); printf("请输入学员年龄:"); scanf("%d",&age); //清空输入缓冲区 fflush(stdin); //按指定格式保存 fprintf(file,"姓名:%s\t\t年龄:%s\n",name,age); printf("请问您还要输入吗?y|no\n"); scanf("%c",&c); if(c=='Y'||c=='y'){ continue; }else{ break; } } fclose(file); }