C语言文件读写总结
主要有四种:
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语言文件读写总结的更多相关文章
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- 3,C语言文件读写
这两天看到一个关于文件读写的题目,索性就把相关内容总结下. C语言文件读写,无非是几个读写函数的应用,fopen(),fread(),fwrite()等,下面简单介绍下. 一.fopen() 函数原型 ...
- C语言文件读写命令fprintf和fscanf
以向文件中读取和写入二维数组为例. 以下是fprintf的使用:向文件中写入10*10的二维数组,数组元素为1~100之间的随机数. #include <stdlib.h> #includ ...
- C语言文件读写操作
C语言实现文件读写,注意区分几个方法: 写入: fwrite() //个人认为这个最好,可是实现写入任何数据类型,任何长度 fputs() //写入一个字符串,字符串长度不能太长,具体的长度未知,但估 ...
- C++常用工具库(C语言文件读写,日志库,格式化字符串, 获取可执行文件所在绝对路径等)
前言 自己常用的工具库, C++ 和C语言实现 使用cmake维护的项目 持续更新..... 提供使用范例, 详见example文件夹 windows使用的VS通过了的编译. Linux(Ubuntu ...
- C语言文件读写(结构体文件)
有时候,我们需要将输入的数据存储起来,这时候就需要用到文件,对于C语言而言,文件的读写有多种方式,下面主要是结构体文件的读写,例如student.dat(第一列是学号,第二列是姓名) xiaoming ...
- C语言文件读写
1.用fopen打开文件 该函数的原型为FILE *fopen(const char *filename, const char *mode),第一个参数是文件名,第二个参数是打开文件的模式. 打开文 ...
- [知识复习] C语言文件读写
文件打开 fopen() 返回FILE* 对象,如果打开失败返回NULL,错误代码存入errno中 FILE *fopen( const char * filename, const char * m ...
- C 语言 文件读写
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之.一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:type ...
- C语言文件读写Demo
CIODemo.c #include <stdio.h> #include <time.h> #define INPUT_BUFFER_SIZE 100 * 1024 int ...
随机推荐
- sublime text 3和sublime text 2的 package control 插件 代码
SECURITY NOTICE: The Python code used by this method does not use SSL because Sublime Text on Linux ...
- overflow滚动条样式设置,ie和webkit内核
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 辛星深入分析vim的自己主动补全功能以及vim的映射
曾经对于vim的自己主动补全功能,都是须要的时候从网上下载点配置项,然后复制到自己的vimrc上去,自己也不知道是什么意思.结果发现搜索到的非常多自己主动补全的方式都非常另类,有的喜欢在补全大括号的时 ...
- jquery $.proxy使用 Jquery实现ready()的源码
jquery $.proxy使用 在某些情况下,我们调用Javascript函数时候,this指针并不一定是我们所期望的那个.例如: 1 //正常的this使用 2 $('#myElement') ...
- JavaScript 日期格式化 简单有用
JavaScript 日期格式化 简单有用 代码例如以下,引入jquery后直接后增加下面代码刷新可測试 Date.prototype.Format = function (fmt) { //auth ...
- UVA 1541 - To Bet or Not To Bet(概率递推)
UVA 1541 - To Bet or Not To Bet 题目链接 题意:这题题意真是神了- -.看半天,大概是玩一个游戏,開始在位置0.终点在位置m + 1,每次扔一个硬币,正面走一步,反面走 ...
- API网关如何实现对服务下线实时感知
上篇文章<Eureka 缓存机制>介绍了Eureka的缓存机制,相信大家对Eureka 有了进一步的了解,本文将详细介绍API网关如何实现服务下线的实时感知. 一.前言 在基于云的微服务应 ...
- struts2上传图片超过大小给出错误提示
struts2上传图片超过大小给出错误提示 今天碰到上传图片太大,上传不上去返回input视图的界面,回显的错误信息却是乱码,整了好久才整出来,在这里做个记录,方便自己以后查阅,也希望能 ...
- Open Source Streaming Server--EasyDarwin
Welcome to EasyDarwin Streaming Server, which is an open source Streaming Server Based On Appple's D ...
- java的一个简单死锁的例子
package com.deadlock; /* * 演示死锁:(由毕向东视频所得) * 一种解释:Thread—0拿到lock1锁,Thread—1拿到lock2锁,Thread—0想要lock2锁 ...