C语言fputs fgets fputc fgetc fscanf fprintf及fopen操作的整理
Posted 我是一颗大萝北
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言fputs fgets fputc fgetc fscanf fprintf及fopen操作的整理相关的知识,希望对你有一定的参考价值。
最近写了一些文件操作的程序,频繁使用下面的函数。所以整理一下。
一、fopen函数
fopen函数的一般用法
FILE *f;
if((f=fopen("1.txt","这里写文件操作"))==NULL){
printf("Open file failed\\n");
}
1.以只读方式打开文件。fopen第二个参数为r。要求文件“1.txt”必须存在,不存在的话只读方式不会帮你创建的
FILE *f;
if((f=fopen("1.txt","r"))==NULL){ //打开只读文件
printf("Open file failed\\n");
}
2.创建一个空文件。fopen第二个参数为w。也就是说,以只写方式打开可以创建一个名为“1.txt”的空文件
FILE *f;
if((f=fopen("1.txt","w"))==NULL){ //创建一个空文件
printf("Open file failed\\n");
}
3.清空“1.txt”文件的内容,并且从头开始写。同样,fopen第二个参数为w
FILE *f;
if((f=fopen("1.txt","w"))==NULL){
printf("Open file failed\\n");
}
4.不想清空原来有内容的文件,希望从文件的末尾开始追加新内容。fopen第二个参数为a
FILE *f;
if((f=fopen("1.txt","a"))==NULL){ //创建一个空文件
printf("Open file failed\\n");
}
注意:
如果你的程序向文件中写不进去东西,就来看一下fopen的参数是否使用错了。如果用fopen(“1.txt”,“r”)打开一个只读文件,当然写不进去。
二、读文件、写文件函数
1.fputs 按行输入
(1)一般用fputs函数都是希望在原文件后面再加几行,所以打开方式是“a”
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char buf[51];
int main(){
FILE *f;
if((f=fopen("cpp.txt","a"))==NULL) //追加方式
printf("文件打开失败!");
exit(0);
}
char buf[30]="Hello World!";
fputs(buf,f); //在文件末尾追加一行
fclose(f);
return 0;
}
2.fgets 按行读文件
(1)首先要定义一个缓冲区char buf[51],且必须是char数组,不能是char *
(2)fgets函数返回的类型是char * ,所以用NULL判断是否读到文件末尾
(3)估摸着文件一行最多多少字符,就把fgets的第二个参数设置比最多字符数多一点。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char buf[51];
int main(){
FILE *f;
if((f=fopen("cpp.txt","r"))==NULL) //只读方式
printf("文件打开失败!");
exit(0);
}
while(fgets(buf,50,f)!=NULL)//fgets返回NULL时 ,读到文件末尾
{
printf("%s",buf);
}
fclose(f);
return 0;
}
3.fprintf 格式化按行输入
(1)和fputs的用法几乎一模一样
(2)如果你需要格式化输入一行的话,就用这个函数吧;否则用fputs足以
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char buf[51];
int main(){
FILE *f;
if((f=fopen("cpp.txt","a"))==NULL) //追加方式
printf("文件打开失败!");
exit(0);
}
char id[30]="222";
char name[30]="222";
char score[30]="222";
fprintf(f,"%s %s %s \\n",id,name,score); //格式化写入
fclose(f);
return 0;
}
4.fscanf 按行从文件中读,并格式化
(1)这个函数比较有用。如果文件中格式工整,比如说每一行是按照 char类型 int类型 char类型 char类型 这样排列的,我用fgets函数读出来这一行,就把这一行全变成一个字符串了,但用fscanf函数可以分别得到char类型 int类型 char类型 char类型 的每个变量,便于后续处理
(2)返回值是int型,所以用EOF判断是否读到文件末尾
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
FILE *f;
char name[20];
char id[20];
char score[20];
int flag=0;
if((f=fopen("score.txt","r"))==NULL){ //打开只读文件
printf("Open file failed\\n");
return;
}
while(fscanf(f,"%s %s %s",id,name,score)!=EOF){ //fscanf的返回值是int
printf("%s %s %s",id,name,score);
}
}
5.fgetc 按字符读文件
(1)一个字符一个字符的读入,并且会自动略过换行符
6.fputc 按字符输入
以上是关于C语言fputs fgets fputc fgetc fscanf fprintf及fopen操作的整理的主要内容,如果未能解决你的问题,请参考以下文章