3,C语言文件读写

这两天看到一个关于文件读写的题目,索性就把相关内容总结下。

C语言文件读写,无非是几个读写函数的应用,fopen(),fread(),fwrite()等,下面简单介绍下。

一、fopen()



  函数原型:FILE *fopen(const char *path, const char *mode);

  参数说明:path,所打开的文件名(包含文件路径,缺省值为当前工程目录);mode:流形态,后文详述。

  返回值:文件指针。打开失败,返回NULL;打开成功,返回指向该流的文件指针。

  mode详解:mode就是打开文件的方式,读写?二进制?追加在文件末?等等。

  r: 只读方式,文件需存在

  r+: 读写方式,文件需存在

  rb+: 读写二进制(binary)文件,不过好像只读(可以自己测试)

  rw+: 读写文本文件

  w: 只写文件。若文件存在,则覆盖原内容;若不存在,新建文件

  w+: 读写。若文件存在,(写时)则覆盖原内容;若不存在,新建文件

  a: append, 只写文件。若文件存在,追加写的内容到文件末;若不存在,新建文件

  a+: append,读写文件。若文件存在,追加写的内容到文件末;若不存在,新建文件

  wb:  只写。二进制文件。若不存在,新建文件

wb+: 读写。二级制文件。若不存在,新建文件。

  值得注意的是,有的编译器支持rw等参数,就好比linux中文件的属性(rwx-421)。

二、fopen(), fwrite()



  1)函数原型: size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

    参数说明:ptr:数据buffer位置;size:每个数据类型的大小: count:数据的个数; stream:文件指针,指向待读取的文件

  2)函数原型:size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

   参数说明: ptr,数据buffer位置; 每个数据类型的大小: count:数据的个数; stream:文件指针,指向待写入的文件

  注意:这两个函数也是配套fopen()函数来操作的,其读写文件的方式取决于fopen函数的mode参数。

三、文件读写实例



  这里,我们把一堆结构体数据写入我的文件“myfile.dat”, 然后再从中读取出来,回显在console上。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define N 5
 4 typedef struct
 5 {
 6     int num;
 7     char name[10];
 8     char tel[10];
 9 } STYPE;
10 void check ();
11
12 int fun (STYPE *std)
13 {
14     FILE  *fp = NULL;  //定义时,fp最好指向空吗?
15     int i;
16     if ((fp = fopen ( "myfile.dat ", " wb ")) == NULL) return 0;
17
18     printf(" \noutput data to file ! \n");
19     for ( i = 0 ; i < N; i ++ )
20         fwrite (&std[i], sizeof (STYPE), 1, fp);
21     fclose (fp);
22     fp = NULL;
23     return 1 ;
24 }
25
26 int main ()
27 {
28     STYPE s[10] = { { 1, "aaaaa", "111111"},
29                     { 1, "bbbbb", "222222"},
30                     { 1, "ccccc", "333333"},
31                     { 1, "ddddd", "444444"},
32                     { 1, "eeeee", "555555"} };
33     int k;
34     k = fun(s);
35     if (k == 1)
36     {
37         printf("Succeed !");
38         check() ;
39     }
40     else
41         printf ( " Fail !");
42 }
43
44 void check()
45 {
46     FILE *fp = NULL ; //定义时,fp最好指向空吗??
47     int i;
48     STYPE s[10];
49     if ((fp = fopen ("myfile.dat ", "rb")) == NULL)
50     {
51         printf ( "Fail ! \n");
52         exit (0);
53     }
54     printf ("\nRead file and output to screen :\n");
55     printf ("\n num name tel \n");
56     for ( i = 0; i < N; i++ )
57     {
58         fread (&s[i], sizeof ( STYPE ), 1, fp);
59         printf (" % d %s %s \n", s[i].num, s[i].name, s[i].tel);
60     }
61     fclose (fp);
62     fp = NULL;   //为了避免dangling pointer?
63 }

  程序运行结果说明:

  1)我们观察工程目录下,多了一个myfile.dat的文件

  

  2)回显在console

  

  注意事项:

  1)fclose(fp). 文件操作完成后,需要关闭文件流,可能会造成文件占用内存泄露;或者下次访问文件时,出现不可预料的问题

  2)fp = NULL. 文件关闭后,需要将文件指针指向NULL。防止dangling pointer。

  3) 在最开始定义文件指针时,需要将其指向NULL吗?仅从初始化的角度来看,指向NULL也许能避免一些安全问题。

时间: 2024-10-21 08:11:37

3,C语言文件读写的相关文章

C语言文件读写命令fprintf和fscanf

以向文件中读取和写入二维数组为例. 以下是fprintf的使用:向文件中写入10*10的二维数组,数组元素为1~100之间的随机数. #include <stdlib.h> #include<iostream> using namespace std; int main() { int array[13][13],i,j; FILE *fp = fopen("result.txt", "w"); if(!fp) { printf("

C语言文件读写操作总结

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

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);

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

C语言文件读写

1.用fopen打开文件 该函数的原型为FILE *fopen(const char *filename, const char *mode),第一个参数是文件名,第二个参数是打开文件的模式. 打开文件的模式主要是以下几种: “r”以文本方式打开文件,只进行读操作 “w”以文本方式打开文件,只进行写操作 “a”以文本方式打开文件,只往其末尾添加内容 “rb”以二进制方式打开文件,只进行读操作 “wb”以二进制方式打开方式,只进行写操作 “ab”以二进制方式打开文件,只往其末尾添加内容 “r+”以

C 语言 文件读写

在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之.一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* File status flags */char fd; /* File descriptor */unsigned char hold; /* Ung

NX二次开发-C语言文件读写fwrite和fread函数

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <stdio.h> 5 6 7 8 UF_initialize(); 9 10 /* 11 //设置文件路径 12 const char* filename = "D:\\123.txt"; 13 14 //二进制方式打开文件 15 FILE* fp = fopen(filename, "wb"); 16 if(fp != NULL) 17 { 18 //

C语言文件的读写

对文件的读和写是最常用的文件操作.在C语言中提供了多种文件读写的函数: 字符读写函数  :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式化读写函数:fscanf和fprinf 下面分别予以介绍.使用以上函数都要求包含头文件stdio.h. 字符读写函数fgetc和fputc 字符读写函数是以字符(字节)为单位的读写函数. 每次可从文件读出或向文件写入一个字符. 1) 读字符函数fgetcfgetc函数的功能是从指定的文件中读一个字符

【C语言探索之旅】 第二部分第七课:文件读写

内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写