主要有四种:

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. Android onCreate 的savedInstanceState 作用

    在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanc ...

  2. Neural Networks and Deep Learning学习笔记ch1 - 神经网络

    近期開始看一些深度学习的资料.想学习一下深度学习的基础知识.找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的. ...

  3. C#中异常处理和Java的区别

    捕获异常,同样是try...catch...,这个完全一样: 抛出异常,同样是throw,这个完全一样: 函数抛出怎样的异常,Java中可以用throws定义,而C#中不用定义,相当于throws E ...

  4. byte 单位换算

    1G就1GB啦,平时人们说1G只是简洁来说而已. bit(位).B(字节).K(千).M(兆).G(吉咖).T(太拉) B(Byte).KB(KiloByte).MB(MegaByte).GB(Gig ...

  5. Vue beforeRouteEnter 的next执行时机

    背景 今天在用vue实现界面的时候,想在beforeRouteEnter钩子函数中去获取数据,然后通过next方法设置到跳转页面的实例中,结果发现数据一直没办法在界面渲染的时候赋值,苦思不得其解,遂g ...

  6. 使用 xmllint 验证 odoo xml文件

    Odoo 源码包含了2个 relax ng 文件,也是odoo sa用来验证xml的正确性的. openerp/import_xml.rng openerp/addons/base/rng/view. ...

  7. 最新研发的基于Java的高速开发平台

    可自我扩展的智能开发平台       在开发平台设计过程中,联科研发部一開始就希望能研发一套智能开发机制能自己开发自己的平台-即一个能自我修复和自我扩展的开发平台.这个开发平台不但能开发其它应用还能不 ...

  8. (转)Understanding C parsers generated by GNU Bison

    原文链接:https://www.cs.uic.edu/~spopuri/cparser.html Satya Kiran PopuriGraduate StudentUniversity of Il ...

  9. Java中ASM框架详解

    什么是asm呢?asm是assembly的缩写,是汇编的称号,对于java而言,asm就是字节码级别的编程.  而这里说到的asm是指objectweb asm,一种.class的代码生成器的开源项目 ...

  10. 透视WPF 应用程序的利器

    当我们看到一些设计新颖的网站时,可以借助浏览器自带的Inspector 工具或插件方便的浏览网站布局结构及逻辑.如果是WPF 应用程序能否看到控件的架构方式呢?本篇将介绍两款工具Snoop 和WPF ...