主要有四种:

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. PS常用平面设计制作尺寸

      PHOTPSHOP照片处理    数码照片尺寸 平面设计常用制作尺寸 名片 横版:90*55mm<方角> 85*54mm<圆角> 竖版:50*90mm<方角> ...

  2. javascript 怎么操纵OGNL标签

    吧ONGL标签放到html标签中,来操作html的标签就能够了 样例代码: html <div id="categoryid" style="display:non ...

  3. require.js使用

    无可奈何,二开项目用了require.js! 一道槛是挨不过去了 require官网: http://requirejs.org/ require.js cdn: <script src=&qu ...

  4. 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组

    原文链接:C语言结构体里的成员数组和指针 复制例如以下: 单看这文章的标题,你可能会认为好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Lar ...

  5. String.split()分割字符串方法

    split方法的主要用处就是:分割字符串 split方法返回的是数组类型 主要由以下几种用法: 1.比如有一个字符串var str = "bcadeab";对str使用split方 ...

  6. CentOSyum操作

    查看已经安装yum: yum list installed|grep mysql 查看yum: yum list|grep mysql 更新yum: rpm -ivh mysql-community- ...

  7. mysql 中遇到金额 BigDecimal类型字段

    当数据库字段为BigDecimal型,and后面判断去掉. 否则当为0时候,视为空处理了.即传参为null

  8. C语言的面向对象设计之 X264,FFMPEG 架构探讨

    FFMPEG架构分析 使用面向对象的办法来设想这样一个编解码库,首先让人想到的是构造各种编解码器的类,然后对于它们的抽象基类确定运行数据流的规则,根据算法转换输入输出对象. 在实际的代码,将这些编解码 ...

  9. 03 http+socket编程批量发帖

    <?php // http请求类的接口 interface Proto { // 连接url function conn($url); //发送get查询 function get(); // ...

  10. Tabs in Non-RootViewController Scenarios

    新建空工程如图 添加一个MainStoryboard如图 设置启动项为MainStoryboard 重写AppDelegate的Window方法 public override UIWindow Wi ...