C文件读写操作

C语言的文件

一、文件基本操作:

       在c语言中,对数据文件的操作都是依靠文件类型指针来完成。

1.文件类型指针的定义方式:FILE *文件类型变量

2.调用fopen函数打开文件的方法:

文件类型指针变量=fopen(文件名,使用文件打开方式);

文件打开方式(12种)


文件打开方式


意义


rt


只读打开一个文本文件,只允许读数据


wt


只写打开或建立一个文本文件,只允许写数据


at


追加打开一个文本文件,并在文件末尾写数据


rb


只读打开一个二进制文件,只允许读数据


wb


只写打开或建立一个二进制文件,只允许写数据


ab


追加打开一个二进制文件,并在文件末尾写数据


rt+


读写打开一个文本文件,允许读和写


wt+


读写打开或建立一个文本文件,允许读写


at+


读写打开一个文本文件,允许读,或在文件末追加数据


rb+


读写打开一个二进制文件,允许读和写


wb+


读写打开或建立一个二进制文件,允许读和写


ab+


读写打开一个二进制文件,允许读,或在文件末追加数据

3.文件关闭;

Fclose(文件指针)

二、文件读写操作

1.字符的读写函数:fgetc()和fputc();

2.格式化读写函数:fscanf()和fprintf();

3.数据块读写函数:fread()和fwrite();

4.字符串的读写函数:fgets()和fputs();

示例代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <time.h>
#define NUM 99999
//打开或创建文件
FILE *fp;
int str[NUM];
void build(int a){
	if(a==1){
		if((fp=fopen("d://1234.txt","w"))==NULL) /* c盘下创建c:\123.txt文件*/
		{
			printf("\nopen file error");
			getchar();
			exit(1);
		}
	}
	else if(a==2){
		if((fp=fopen("d://1234.txt","r"))==NULL) /* c盘下创建c:\123.txt文件*/
		{
			printf("\nopen file error");
			getchar();
			exit(1);
		}
	}
	else if(a==3){
		if((fp=fopen("d://1234","wb"))==NULL) /* c盘下创建c:\123.txt文件*/
		{
			printf("\nopen file error");
			getchar();
			exit(1);
		}
	}
	else if(a==4){
		if((fp=fopen("d://1234","rb"))==NULL) /* c盘下创建c:\123.txt文件*/
		{
			printf("\nopen file error");
			getchar();
			exit(1);
		}
	}
}
//关闭文件
void Close(){
	fclose(fp);
}
//产生写入的数据
void num(){
	int i;
	for(i=0;i<NUM;i++){
		str[i]=i+9999;
	}
}
//fputc()
void Fputc(){
	int i,j;
	char c[100];
    for(i = 0; i < NUM; i++)
	{
		itoa(str[i],c,10);
		for(j=0;j<strlen(c);j++)
			fputc(c[j],fp);
	}
}
//fgetc()
void Fgetc(){
	char c;
	for(c=fgetc(fp);c!=EOF;c=fgetc(fp)){}
}
//fscanf()
void Fscanf(){
	int i=0;
	int str1;
	while(fscanf(fp,"%d",&str1)==1){
		//print();
	}
}
//fprintf()写入文件
void Fprintf(){
	int i;
	for(i=0;i<NUM;i++)
		fprintf(fp,"%d ",str[i]);
}
//Fread()
void Fread(){
	int i,b[NUM];
	if(fread(b,sizeof(int),NUM,fp)!=NUM)printf("error!");
	//for(i=0;i<99999;i++);printf("%d ",b[i]);
}
//Fwrite()
void Fwrite(){
	if(fwrite(str,sizeof(int),NUM,fp)!=NUM)printf("error!");
}
//fgets()
void Fgets(){
	char mystring[NUM];
	if (fgets(mystring,NUM,fp)!= NULL){}
       //printf("%s",mystring);
}
//fputs()写函数
void FputS(){
	int i,j;
	char c[100];
    for(i = 0; i < NUM; i++)
	{
		itoa(str[i],c,10);
			fputs(c,fp);
	}
}
int main()
{
	double cputime;
	num();
	//fputc()
	clock_t a=clock();
	build(1);
	Fputc();
	Close();
	clock_t b=clock();
	cputime=(double)(b-a)/CLOCKS_PER_SEC;
	printf("fputc()读入时间=%.4f seconds\n",cputime);
	//fgetc()
	clock_t a1=clock();
	build(2);
	Fgetc();
	Close();
	clock_t b1=clock();
	cputime=(double)(b1-a1)/CLOCKS_PER_SEC;
	printf("fgetc()读取时间=%.4f seconds\n",cputime);
	////fprintf()
	clock_t a2=clock();
	build(1);
	Fprintf();
	Close();
	clock_t b2=clock();
	cputime=(double)(b2-a2)/CLOCKS_PER_SEC;
	printf("fprintf()读入时间=%.4f seconds\n",cputime);
	//fscanf()
	clock_t a3=clock();
	build(2);
	Fscanf();
	Close();
	clock_t b3=clock();
	cputime=(double)(b3-a3)/CLOCKS_PER_SEC;
	printf("fscanf()读取时间=%.4f seconds\n",cputime);
	//Fwrite()
	clock_t a4=clock();
	build(3);
	Fwrite();
	Close();
	clock_t b4=clock();
	cputime=(double)(b4-a4)/CLOCKS_PER_SEC;
	printf("Fwrite()读入时间=%.4f seconds\n",cputime);
	//Fread()
	clock_t a5=clock();
	build(4);
	Fread();
	Close();
	clock_t b5=clock();
	cputime=(double)(b5-a5)/CLOCKS_PER_SEC;
	printf("Fread()读取时间=%.4f seconds\n",cputime);
	//fputs()写函数
	clock_t a6=clock();
	build(1);
	FputS();
	Close();
	clock_t b6=clock();
	cputime=(double)(b6-a6)/CLOCKS_PER_SEC;
	printf("fputs()读入时间=%.4f seconds\n",cputime);
	//fgets()
	clock_t a7=clock();
	build(2);
	Fgets();
	Close();
	clock_t b7=clock();
	cputime=(double)(b7-a7)/CLOCKS_PER_SEC;
	printf("fgets()读取时间=%.4f seconds\n",cputime);
	return 0;
} 

结果如下:

时间: 2024-10-14 01:00:30

C文件读写操作的相关文章

java文件读写操作类

借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内容进行捕获,放在txt文本文档中 2,对各种类型数据都以字符串的形式逐行写入 3,对全局数组的内容进行写入 读操作: 获取文件行数 对逐行字符串型数据进行类型转换,放入二维数组中 为后面算法处理提供入口,但是要小心的是:不可以将行数用全局变量做计数器,否则每次读入是全局变量累加出错,应重新开始读取

php学习基础-文件系统(二) 文件读写操作、文件资源处理

一.文件的打开与关闭 /* *读取文件中的内容 * file_get_contents(); //php5以上 * file() * readfile(); * * 不足:全部读取, 不能读取部分,也不能指定的区域 * * fopen() * fread() * fgetc() * fgets() * * * * * 写入文件 * file_put_contents("URL", "内容字符串"); //php5以上 * 如果文件不存在,则创建,并写入内容 * 如果

Python常用的文件读写操作和字符串操作

文件读写操作 fileUtils.py # -*- coding: utf-8 -*- import os def getFileList(dir, fileList=[]):     """     遍历一个目录,输出所有文件名     param dir: 待遍历的文件夹     param filrList : 保存文件名的列表     return fileList: 文件名列表     """     newDir = dir     

Android数据存储——文件读写操作(File)

Android文件读写操作 一.文件的基本操作 Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件.在默认状态下,文件是不能在不同程序间共享的. 当用户卸载您的应用程序时,这些文件删除. 文件存储数据可以通过openFileOutput方法打开一个文件(如果这个)文件不存在就自动创建这个文件),通过load方法来获取文件中的 数据,通过deleteFile方法删除一个指定的文件. 1,常用方法介绍: File是通过FileInputStream和FileOutput

python进阶--文件读写操作

Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 = open('thisfile.txt') >>>try: f1.read() finally: f1.close() 2. 读文件(read,readline,readlines) ①读文本文件 input = open('data','r') input.read() ②读二进制文件

C语言文件读写操作,从文件读取数据

很早写的在linux系统下的文件读写操作,从文件中读取数据 #include <stdio.h> int ReadInfoFromFile(const char *strFile) { FILE *fp; char ch; fp = fopen(strFile, "r"); // 只读的方式打开文件 if(fp==NULL) { perror("fopen"); // 打开文件失败 打印错误信息 return -1; } ch = fgetc(fp);

【python学习笔记】pthon3.x中的文件读写操作

在学习python文件读写的时候,因为教程是针对python2的,而使用的是python3.想要利用file类时,类库里找不到,重装了python2还是使不了.在别人园子认真拜读了<详解python2和python3区别>(已收藏)之后,才发现python3已经去掉file类. 现在利用python进行文件读写的方法更加类似于C语言的文件读写操作. 如今总结如下: 一 打开文件—— f = open('poem.txt','x+'): 读过open的帮助文档,然后自己翻译了一下,现给大家分享一

python(三)一个文件读写操作的小程序

我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1.txt xiaoBing_1.txt xiaoNa_2.txt xiaoBing_2.txt 这样格式的四个文件 下面上代码: #定义一个保存文件的函数 def save_file(xiaoNa,xiaoBing,count): file_name_xiaoBing = 'xiaoBing_'+str(cou

C语言文件读写操作,写入数据到文件

很早写的在linux系统下的文件读写操作,写入数据到文件,很时候初学者学习 #include <stdio.h> int writeInfoToFile(const char *strFile) { int age, i; char name[10]; FILE *fp; fp = fopen(strFile, "w"); // 只读的方式打开文件 if(fp == NULL) { perror("fopen"); // 文件打开失败,打印错误信息 re