主要有四种:

1.文件的字符输入输出函数 fgetc fputc
2.文件的字符串输入输出函数 fgets fputs
3.文件的格式化输入输出函数 fscanf fprintf
4.文件的数据块输入输出函数 fread fwrite

1.文件的字符输入输出函数 fgetc fputc

fgetc从文件读取一个字符数据:

c = fgetc (fp);

fputc将一个字符写入指定文件:

fputc(c,fp);

例子:

//从f_src.txt将数据逐个读出,将其中数字删除后写入文件f_dst.txt
#include <stdio.h>
#include <stdlib.h> int main()
{
char c;
FILE *fp1, *fp2 ;
if((fp1 = fopen("f_src.txt","r"))==NULL)
{
printf("cannot open the file.\n");
exit();
}
if((fp2 = fopen("f_dst.txt","w"))==NULL)
{
printf("cannot open the file.\n");
exit();
}
while(!feof(fp1))//判断文件是否到结尾
{
c=fgetc(fp1);
if(!(c>=''&&c<=''))
fputc(c,fp2);
printf("%c",c);
}
fclose(fp1);
fclose(fp2); }

2.文件的字符串输入输出函数 fgets fputs

fgets读取字符串:

fgets(str,n,fp);//从fp指向的文件中读取n-1个字符,加字符串结束标志后送str,返回字符串首地址

将字符串写入文件:

fputs(str,fp);

例子:

#include <stdio.h>
#include <stdlib.h> //从键盘读取字符串保存到string.txt,仅输入回车时结束
int main()
{
FILE *fp;
char str[];
if((fp=fopen("string.txt","w"))==NULL)
{printf("error");exit();} printf("input sth\n");
//char str2 = strlen(gets(str));
while(strlen(gets(str))>)
{
fputs(str,fp);
fputc('\n',fp);
}
fclose(fp); }

3.文件的格式化输入输出函数 fscanf fprintf

例子:

//在student.txt中存放了10个学生的成绩,计算平均成绩保存到stu_aver.txt
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
float average(int *p , int num );
int i = , score[N];
FILE *fp = fopen("student.txt","r"); //int d;
//while(scanf("%d", &d) != EOF )
// score[i ++] = d;
float aver;
for(i=;i<N;i++)
fscanf(fp,"%d,",&score[i]);
fclose(fp);
int count;
for(count = ; count <N ; count++)
{printf("%d",score[count]);
printf("\n");
}
aver = average(score,N);
FILE *fp2 = fopen("average.txt","w");
fprintf(fp2,"%.lf",aver);
fclose(fp2); }
float average(int *p,int num)
{
int i , sum ;
float aver ;
sum = ;
for(i= ; i <num ; i ++)
sum += *(p+i);
aver = sum*1.0/num; FILE *fp3 = fopen("sum.txt","w");
fprintf(fp3,"%d",sum);
fclose(fp3); return aver;
}

4.文件的数据块输入输出函数 fread fwrite

#include <stdio.h>
#include <stdlib.h>
/*fread(buffer,size,count,fp);
buffer是指针变量,表示读出的数据在内存中的起始地址
size表示数据项的字节长度
count表示要读取的数据项的个数
fp指向一个已经打开的待读文件
函数返回从文件中读取的数据项数 fwrite(buffer,size,count,fp);
*/
//从键盘输入三条通讯录记录(姓名+电话),写入tel.txt,再读出这些数据显示在屏幕上 #define N 3
struct person
{
char name[];
long int no ;
};
int main()
{
struct person per[N],*p;
FILE *fp;
int i ;
p = per ;
if((fp = fopen("tel.txt","w"))==NULL)
{
printf("error opening file\n");
}
printf("input data:\n");
for(i = ; i < N ; i++ , p++)
scanf("%s%ld",p->name,&p->no);//p->name代表数组name首地址本身就是地址了所以不用加& /*结构体数组的初始化:
输入zhangsan 123↙
lisi 234↙
wangwu 456↙
之后,相当于给结构体数组这样初始化:
struct person per[3]=
{
{"zhangsan",123},
{"lisi",234},
{"wangwu",456}
};
*/ fwrite(per,sizeof(struct person),N,fp);
rewind(fp);//将文件指针移动到文件头部
p = per ;
fread(p,sizeof(struct person),N,fp);
for(i = ; i <N ; i ++ , p++)
printf("%s\t%ld\n",p->name, p->no);
fclose(fp);
}

其他文件函数还有ftell() rewind() fseek() ferror() clearerr()等。

C语言文件读写总结的更多相关文章

  1. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  2. 3,C语言文件读写

    这两天看到一个关于文件读写的题目,索性就把相关内容总结下. C语言文件读写,无非是几个读写函数的应用,fopen(),fread(),fwrite()等,下面简单介绍下. 一.fopen() 函数原型 ...

  3. C语言文件读写命令fprintf和fscanf

    以向文件中读取和写入二维数组为例. 以下是fprintf的使用:向文件中写入10*10的二维数组,数组元素为1~100之间的随机数. #include <stdlib.h> #includ ...

  4. C语言文件读写操作

    C语言实现文件读写,注意区分几个方法: 写入: fwrite() //个人认为这个最好,可是实现写入任何数据类型,任何长度 fputs() //写入一个字符串,字符串长度不能太长,具体的长度未知,但估 ...

  5. C++常用工具库(C语言文件读写,日志库,格式化字符串, 获取可执行文件所在绝对路径等)

    前言 自己常用的工具库, C++ 和C语言实现 使用cmake维护的项目 持续更新..... 提供使用范例, 详见example文件夹 windows使用的VS通过了的编译. Linux(Ubuntu ...

  6. C语言文件读写(结构体文件)

    有时候,我们需要将输入的数据存储起来,这时候就需要用到文件,对于C语言而言,文件的读写有多种方式,下面主要是结构体文件的读写,例如student.dat(第一列是学号,第二列是姓名) xiaoming ...

  7. C语言文件读写

    1.用fopen打开文件 该函数的原型为FILE *fopen(const char *filename, const char *mode),第一个参数是文件名,第二个参数是打开文件的模式. 打开文 ...

  8. [知识复习] C语言文件读写

    文件打开 fopen() 返回FILE* 对象,如果打开失败返回NULL,错误代码存入errno中 FILE *fopen( const char * filename, const char * m ...

  9. C 语言 文件读写

    在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之.一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:type ...

  10. C语言文件读写Demo

    CIODemo.c #include <stdio.h> #include <time.h> #define INPUT_BUFFER_SIZE 100 * 1024 int ...

随机推荐

  1. lstm作的第一首诗,纪念

    黄獐春风见破黛,十道奇昌犹自劳. 开领秦都色偏早,未知长柳是来恩. 争时欲下花木湿,早打红筵枝上香. 酣质矫胶麦已暮,丝窗瑞佩满含龙. 感觉有点意思哈,花木对应枝上,还有点对仗的意味. 于是接着又弄了 ...

  2. 三维场景如何嵌入到PPT中展示?

    今天要跟大家一起交流的大体内容如标题所示,日常生活中,ppt已经成为人们工作学习生活中不可或缺的工具之一,那么三维场景是如何在ppt中加载展示的呢?请大家慢慢往下看. 1.创建命令按钮和web bro ...

  3. utuntu16.04安装tensorflow1.4-gpu

    之前一直在windows下使用tensorflow,对cpu和gpu的安装都是比较顺利,都是使用anaconda环境下,创建虚拟conda环境,这样方便不同python版本的管理. 一直也想尝试使用u ...

  4. redis主从连接不成功错误

    redis主从连接不成功错误 学习了:https://blog.csdn.net/wzqzhq/article/details/64919133 需要增加 masterauth  password.. ...

  5. 百科知识 ass文件如何打开

    直接拖入视频即可播放 鼠标右键 用记事本打开 也有一些软件支持比如POPSUB(也比较方便调整时间轴) 如果你是说如何加载字幕的话 用VOBSUB是最好的... ASS是视频的字幕,和视频放在同一文件 ...

  6. 解题报告 之 HDU5288 OO&#39; s Sequence

    解题报告 之 HDU5288 OO' s Sequence Description OO has got a array A of size n ,defined a function f(l,r) ...

  7. python正则方法

    通过正则替换字符串 res=re.sub(正则,newString,srcString)//返回替换后的字符串 res,m=res.subn(正则,newString,srcString)//返回替换 ...

  8. python(39)- 网络编程socket练习

    基于tcp的套接字实现远程执行命令的操作 #服务端 import socket import subprocess phone=socket.socket(socket.AF_INET,socket. ...

  9. ppycharm设置解释器版本号码

    在pycharm中点击File,之后在弹出的窗口中输入Project Interpreter,点击之后就可以看到自己的解释器版本是多少了,也可以随意选择想要用的解释器版本号码:

  10. byte数组和文件的相互转换

    /** * 获得指定文件的byte数组 */ private byte[] getBytes(String filePath){ byte[] buffer = null; try { File fi ...