fopen()
函数用于打开文件。
参数:
第一个参数为要打开的文件名;第二个参数是用于指定文件打开的模式字符串。
返回:
成功打开一个文件之后,返回一个文件指针(
FILE
类型);否则返回空指针。
|
|
“r” |
打开一个文本文件,可以读取文件 |
“w” |
打开一个文本文件,可以写入文件,先将文件内容清空。如果该文件不存在则会先创建 |
“a” |
打开一个文本文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则会先创建 |
“r+” |
打开一个文本文件,可以读取与写入 |
“w+” |
打开一个文本文件,可以读取与写入,如果该文件存在则将文件内容清空,如果该文件不存在则会先创建 |
“a+” |
打开一个文本文件,可以读取与写入,向已有文件的尾部追加内容,如果该文件不存在则会先创建;可以读取整个文件,但写入时只能追加内容 |
“rb”, ”wb”… |
与前面模式相似,但是以二进制模式而非文本模式打开文件(”b”表示二进制模式) |
打开文件并读取
#include<stdio.h>
int main(){
char ch;
FILE * fp; //文件指针
fp = fopen("D:\\Myfile.txt","r"); // fopen(打开的文件名,打开的模式)
ch = getc(fp); // 从指针fp指定的文件中获取一个字符
while(ch!=EOF){
putchar(ch); //或者 putc(ch,stdout); 同样是输出到屏幕
ch = getc(fp);
}
fclose(fp);
return 0;
}
Myfile.txt 文件内容
运行结果:
打开文件并写入
用于写文件的函数:
size_t fwrite
(const void* buffer, size_t size, size_t count, FILE* stream);
参数:
- buffer:是一个指针,对fwrite来说,是要输出数据的地址;
- size:要写入内容的单字节数;
- count:要进行写入size字节的数据项的个数;
- stream:目标文件指针;
返回值:
返回实际写入的数据块数目
注意:
这个函数以二进制形式对文件进行操作,不局限于文本文件
#include<stdio.h>
int main(){
char buf[]="Hello World";
FILE *fp;
fp = fopen("D:\\Hello.txt","a+");
for(int i =0;i<10;i++){
fprintf(fp,"%d",i); //写入一个整型数据
}
fwrite(buf,sizeof(buf),1,fp); //写入一个字符串(末尾有'\0')
fclose(fp);
return 0;
}
运行结果:
此外,还可以用
fprintf
、
fputs
、
fputc
、
putc
来对文件进行写操作
#include<stdio.h>
int main(){
FILE *fp;
fp = fopen("D:\\Hello.txt","a+"); //以可读可写的模式打开
fprintf(fp,"Hello\n"); //打印字符串到文件中
fputs("World\n",fp); //打印字符串到文件中
fputc('-',fp); //打印字符到文件中
putc('=',fp); //打印字符到文件中
for(int i =0;i<10;i++){
fprintf(fp,"%d",i); //打印数字到文件中
}
fclose(fp);
return 0;
}
运行结果:
找到 Hello.txt 并打开查看