c语言文件的基本操作

c语言对文件的操作主要分为: 按字符操作,按行操作,按内存块操作

主要的函数:

fopen():

FILE * fopen(_In_z_ const char * _Filename, _In_z_ const char * _Mode);

第一个参数是文件的绝对路径名(包含文件),第二个是文件的打开方式, Mode(方式) 意义如下:

"r"打开一个用于读取的文本文件

"w" 创建一个用于写入的文本文件

"a" 附加到一个文本文件

"rb" 打开一个用于读取的二进制文件

"wb" 创建一个用于写入的二进制文件

"ab" 附加到一个二进制文件

"r+" 打开一个用于读/写的文本文件

"w+" 创建一个用于读/写的文本文件

"a+" 打开一个用于读/写的文本文件

"rb+" 打开一个用于读/写的二进制文件

"wb+" 创建一个用于读/写的二进制文件

"ab+" 打开一个用于读/写的二进制文件

fclose():关闭文件资源

一、按字符:其实就是从文件中一个个读出字符出来

头文件:

#include#include#include

函数原型:

void writeFile(char *fileRealName, char *writeStr); //将一个字符串写入某个文件中

void readFile(char *fileRealName); //读取文件

实现方法:

void readFile(char *fileRealName){

FILE *pf = NULL;

pf = fopen(fileRealName, "r+");

if(pf == NULL){

printf("文件不存在");

return;

}

while (!feof(pf)){

printf("%c", fgetc(pf));

}

fclose(pf);

}

测试写入文件:

int main(){

writeFile("c:/1.txt", "fdweqfefwef");

system("pause");

return 0;

}

运行结果:

测试读取文件:

int main(){

readFile("c:/1.txt");

system("pause");

return 0;

}

运行结果:

二、按行操作:

头文件跟上面一样

函数原型:

void readLine(const char *fileRealName);// 读取一行

void writeLine(const char *fileRealName, const char *writeLine);写入一行

实现方法:

void readLine(const char *fileRealName){

FILE *pf = NULL;

char rl[1024];

char *p = NULL;

pf = fopen(fileRealName, "r+");

if(pf == NULL){

printf("文件不存在");

return;

}

while(!feof(pf)){

p = fgets(rl, 1024, pf);

if(p == NULL)

goto end;

printf("%s", rl);

}

end :

fclose(pf);

}

void writeLine(const char *fileRealName, const char *writeLine){

FILE *pf = NULL;

pf = fopen(fileRealName, "r+");

if(pf == NULL){

printf("文件不存在");

return;

}

fputs(writeLine, pf);

fclose(pf);

}

写入测试就不做了,跟字符操作一样

读取测试:

文本文档为:

ggg

3456

zhang

张三

李四

int main(){

readLine("c:/1.txt");

system("pause");

return 0;

}

运行结果:

三、按照内存块操作:

头文件一样,全局变量:

typedef struct Teacher{

int id;

char name[64];

}Teacher;

函数原型:

void writeTeachers(const Teacher *ts, int len, char *fileRealName);//将数组写入二进制文件中

int readTeachers(Teacher **ts, char *fileRealName);//从二进制文件中读取数据并且创建一个数组来存储,返回值为数组的长度

void printTeacher(Teacher *ts, int len); //遍历数组

实现方法:

1 void writeTeachers(const Teacher *ts, int len, char *fileRealName){

2

3     FILE *pf;

4     int count, i;

5

6     pf = fopen(fileRealName, "wb"); //创建一个二进制文件

7

8     if(pf == NULL)

9         printf("open error!\\n");

10

11     for (i = 0; i < len; i++){

12         count = fwrite(&(ts[i]), sizeof(Teacher), 1, pf); // fwrite()函数人参数分别是写入变量的地址,写入变量的大小,复制多少次(大于一次会顺序存储到该地址后面),文件句柄;返回值是复制成功的次数,如果成功则返回第三个参数的值,反之返回0

13         printf("%d\\n", count);

14     }

15

16     fclose(pf);

17 }

18 /*

19 返回值是读取教师数组的元素个数,教师数组由函数分配内存

20 */

21 int readTeachers(Teacher **ts, char *fileRealName){

22

23     FILE *pf;

24     int count = 0 ,len = 0;

25     Teacher *temp = NULL;

26     Teacher *pt = NULL;

27

28     pf = fopen(fileRealName, "rb+");//打开一个二进制文件

29

30     if(pf == NULL)

31         printf("open error!\\n");

32

33     temp = (Teacher*)malloc(sizeof(Teacher));

34

35     do{

36         count = fread(temp, sizeof(Teacher), 1, pf);

37         len++;

38     }while(count != 0);

39

40     len--; //获得该文件存储的数组的长度

41

42     if(temp != NULL){

43         free(temp);

44         temp = NULL;

45     }

46

47     rewind(pf);//将文件指针重新指向文件开头

48     pt = (Teacher *)malloc(sizeof(Teacher) * len);

49

50     for(count = 0; count < len; ++count){

51         fread(&(pt[count]), sizeof(Teacher), 1, pf);//fread()函数跟fwrite函数极为类似,参照上面的注释

52         printf("第%d位教师 编号 %d 姓名 %s\\n", count + 1, pt[count].id, pt[count].name);

53     }

54

55     fclose(pf);

56     *ts = pt;

57     return len;

58 }

59

60 void printTeacher(Teacher *ts, int len){

61

62     int i;

63

64     for(i = 0; i < len; ++i){

65         printf("第%d位教师 编号 %d 姓名 %s\\n", i + 1, ts[i].id, ts[i].name);

66     }

67 }

测试写:

int main(){

Teacher ts[3];

int i;

for (i = 0; i < 3; i++){

ts[i].id = 1000 + i;

sprintf(ts[i].name, "zhangsan%d", i + 1);

}

writeTeachers(ts, 3, "c:/2.data");

system("pause");

return 0;

}

最终生成一个二进制文件

测试读:

int main(){

Teacher *ts = NULL;

int len = 0;

len = readTeachers(&ts, "c:/2.data");

printTeacher(ts, len);

if(ts != NULL){

free(ts);

ts = NULL;

}

system("pause");

return 0;

}

运行结果:

来源:博客园

时间: 2024-10-11 22:45:52

c语言文件的基本操作的相关文章

C语言文件的基本操作——菜鸟入门(1)

1.头文件要有<stdlib.h> 2.FILE *fopen(char *pname,char *mode) 这是fopen()函数的原型 如果mode 是w,那么,如果没有找到相应的文件的话,就会自动生成一个新的文件. 如果mode 是r的话,并且没有找到相应的文件的话,就会报错. 打开文件的作用是:(1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量:(2)开辟一个缓冲区:(3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件: 原文地址:

C语言对文件的基本操作

在C语言中,对于文件的操作是利用FILE结构体进行的. 几个常用的操作文件函数简介 1:打开文件 FILE *fopen( const char *filename, const char *mode );    第一个参数是指向文件名字符串常量的指针类型: 第二个参数指定文件打开的模式. 文件打开模式: r:读取,如果文件不存在,函数调用失败: w:为写入操作打开一个空文件.若文件不存在,则创建一个文件:若给定的文件已经存在,那么它的内容将被清空: a:为写入操作打开文件.若文件不存在,则首先

C语言文件的读入与写入及C#基础函数学习[图]

C语言文件的读入与写入及C#基础函数学习[图]学了一学期的C语言,还不怎么会使用指针,文件的读入和写入也不能很顺利的写出来,说起来好惭愧.碰巧今天朋友让我帮他编写一个C语言程序,对他数模要用到的大量数据求平均值(每天不同时刻对某一物理量进行检测,持续几十天,求那些时刻测得的物理量的平均值).代码很简单,关键是要掌握怎样对文件进行读入和写入(当然对于菜鸡的我来说,懒惰让我在大一没有好好学习,正好趁着这个契机把文件的基本的操作学会:))分模块来编写还是很重要的,可以使程序看起来简洁明了.写了两个函数

C语言文件读写操作总结

C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char

C语言文件操作函数的编写

 编写文件操作的头文件 /************************************************************************** Copyright(C)    :2014-08-5 toto Filename       :file.h Author          :涂作权 Version         :V1.1 Date            :2014-08-05 Description     :文件操作的头文件 Others  

C语言 文件

小白一个,看到有错误,希望指出,万分感谢 /****************************************************************C语言文件概述:    一般文件可分为二进制文件和文本文件. 约定:我们把数据在终端上的表现形式称为数据的终端形式,而不 称为字符形式. 注:终端是指键盘 显示器等和用户直接打交道的输入输出设备. 二进制文件是把内存中的书按其在内存中的储存形式原样输出到磁 盘上存放,也就是说存放的是数据的原样式. 文本文件是把数据终端形式的二

C 语言文件操作

1. 数据流:     程序与数据的交互以流的形式进行.fopen 即打开数据流,fclose 即刷新数据流.     所谓数据流,是一种抽象,表示这段数据像流一样,需要逐步接收,不能随机存取:也意味着是一段连续的内容,每块数据之间的顺序是确定的.比如一个很大的文件,不能一次性加载到内存里面,无法直接获取文件任意位置的内容,只能逐渐加载到内存.     比如 TCP 被抽象为 stream 而 UDP 被抽象为 block.     2. 缓冲区:     fopen 时, 磁盘 --> 缓冲区

C语言文件的概念和文件指针

1 C语言文件的概念 在程序中,当调用输入函数从外部文件中输入数据赋给程序中的变量时,这种操作成为“输入”或“读”:当调用输出函数把程序中变量的值输出到外部文件中时,这种操作称为“输出”或“写”. C 语言中,对于输入.输出的数据都按“数据流”的形式进行处理.也就是说,输出时,系统不添加任何信息:输入时,逐一读入数据,直到遇到 EOF 或文件结束标志就停止.C 程序中的输入.输出文件都以数据流的形式存储在介质上. 对文件的输入.输出方式也称为“存取方式”.C 语言中,有两种对文件的存取方式:顺序

Linux下文件的基本操作

文件的基本操作 新建和删除文件夹 命令#mkdir /file 在当前目录创建file文件夹 命令#rmdir /file 删除当前目录下file文件夹 复制和移动文件 命令#cp text/file.txt /text1/file1.txt  将text目录下file.txt 复制到text1并更名为file1.txt 命令#mv text/file.txt /text1 将text目录下file.txt复制到text1目录下 查看和创建文件 命令#cat text/file.txt 查看te