主要有四种:

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. SSH 原理和公匙私匙

    先主要介绍了Telnet.SSH 的通信原理,分析了其通信时的工作流程. Telnet 无论Telnet协议连接的是什么类型终端,都会转换为NVT(Net Virtual Terminal)格式进行通 ...

  2. NFC模组,开发NFC功能 仅仅要几条指令的事情

    特点:实现NFC透明传输.内置NFC协议栈,支持UART串口直接读写,用于门禁能够同一时候兼容手机和卡片开门,还能实现动态密钥,读到的NFC数据自己主动串口输出,会串口就能开发NFC,不须要研究LLC ...

  3. sql的一些知识_数据分组

    group by--------按**分组查询 SELECT rank, MIN(weight)as min_weight FROM userinfo GROUP BY rank 对分组的值进行过滤需 ...

  4. valid-palindrome——判断带符号数字字母的字符串是否为回文

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  5. Spring延迟加载

    如下内容引用自:http://www.cnblogs.com/wcyBlog/p/3756624.html 1.Spring中lazy-init详解ApplicationContext实现的默认行为就 ...

  6. Android SDK下载速度慢的解决方法(简单使用代理)

    相信做android开发的同学们.一定会遇到的问题就是google那边常常崩,可是学习的開始.我们又必须要用Android SDK,(几个G的大小),一般我们装完ADT之后(假设你用的是Eclipse ...

  7. 笔记本POWER部分的应用——(MOS/LDO/BUCK BOOST)

    一.MOSFET 简介: 金属-氧化物半导体场效应晶体管,简称金氧半场效晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET)是一 ...

  8. 关于0基础磁盘管理(gpt UEFI...)最好的一篇文章(来自gentoo linux)

    放链接:https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Disks 顺便几张图 watermark/2/text/aHR0cDovL2 ...

  9. 基于websocket实现的web聊天室

    # -*- coding:utf-8 -*- import socket import base64 import hashlib def get_headers(data): "" ...

  10. Jquery 文字模拟输入效果

    https://github.com/mattboldt/typed.js/ 挺酷炫的