博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Standard C Episode 12
阅读量:5063 次
发布时间:2019-06-12

本文共 3560 字,大约阅读时间需要 11 分钟。

FILE结构体用来记录文件相关的信息

FILE结构体类型的指针变量叫做文件指针。
fopen函数可以打开一个文件并制作对应的FILE结构体变量,把结构体变量的地址作为返回值使用。如果执行失败则返回NULL。

1 /* 2    文件练习 3 */ 4 #include 
5 int main() { 6 FILE *p_file = NULL; 7 p_file = fopen("a.txt", "w"); 8 if (p_file) { 9 //文件操作语句10 fclose(p_file);11 p_file = NULL;12 }13 return 0;14 }

使用fopen函数时需要指定文件的操作方式。操作方式由三部分构成,分别如下

第一部分有三个可选的字符'r', 'w'和'a'。这部分必须指定并且只能指定一个字符。
'r'       对文件进行读操作
'w'       对文件进行写操作。如果文件不存在则创建新文
          件否则把原文件内容清除。
'a'       对文件进行写操作。如果文件已存在则会把新内
          容追加在文件末尾
第二部分有一个可选字符'+',这部分可有可无。如果使用了这部分则表示对文件进行读写操作。
第三部分有一个可选字符‘b’,这部分可有可无。如果使用这部分则表示要对文件进行二进制操作。

fclose函数用于关闭一个文件,当程序不再使用某个文件的时候一定要使用这个函数关闭它。

 

 

1 /* 2    文件练习 3 */ 4 #include 
5 int main() { 6 FILE *p_file = NULL; 7 char str[] = "abcdef"; 8 int loop = 0; 9 p_file = fopen("a.txt", "w");10 if (p_file) {11 //文件操作语句12 while (str[loop]) {13 if (EOF == fputc(str[loop], p_file)) {14 break;15 }16 loop++;17 }18 fclose(p_file);19 p_file = NULL;20 }21 return 0;22 }

 

 

1 /* 2    文件练习 3 */ 4 #include 
5 int main() { 6 FILE *p_file = NULL; 7 p_file = fopen("a.txt", "r"); 8 if (p_file) { 9 //文件操作语句10 char ch = 0;11 do {12 ch = fgetc(p_file);13 if (EOF != ch) {14 printf("%c", ch);15 }16 } while (EOF != ch);17 printf("\n");18 fclose(p_file);19 p_file = NULL;20 }21 return 0;22 }

 

 

fputc函数可以把一个字符写入到文件中,如果失败返回EOF。

fgetc函数可以从文件中读出一个字符并返回,如果超过文件尾部则返回EOF。

1 /* 2    文件练习 3 */ 4 #include 
5 int main() { 6 FILE *p_file = NULL; 7 int values[] = {
1, 2, 3, 4, 5}; 8 p_file = fopen("a.bin", "wb"); 9 if (p_file) {10 //文件操作语句11 int num = fwrite(values, sizeof(int), 5, p_file);12 printf("共写入%d个整数变量\n", num);13 fclose(p_file);14 p_file = NULL;15 }16 return 0;17 }

 

 

1 /* 2    文件练习 3 */ 4 #include 
5 int main() { 6 FILE *p_file = NULL; 7 int values[5] = {
0}, loop = 0; 8 p_file = fopen("a.bin", "rb"); 9 if (p_file) {10 //文件操作语句11 int num = fread(values, sizeof(int), 5, p_file);12 printf("共读出%d个整数变量\n", num);13 for (loop = 0; loop <= 4; loop++) {14 printf("%d ", values[loop]);15 }16 printf("\n");17 fclose(p_file);18 p_file = NULL;19 }20 return 0;21 }

 

 

fwrite函数可以一次把数组中的多个变量以二进制方式(在Unix系统上二进制方式写入和文本方式写入无差别,在Windows系统上若作为文本方式写入那么会将换行符写作\r\n,占两个字节)写入到文件中,返回值表示写入的变量个数。

 

fread函数可以一次以二进制方式从文件中读出多个变量的数值并记录到数组中,返回值表示读入的变量个数。

FILE结构体中使用位置指针记录下次对文件进行读写操作的位置,每次对文件进行过读写操作后位置指针都会移动。
rewind函数可以把位置指针移动到文件开头
fseek函数可以把位置指针移动到任何地方
SEEK_SET       0        代表文件开头
SEEK_CUR      1        位置指针当前位置

SEEK_END      2        代表文件结尾

1 /* 2    文件练习 3 */ 4 #include 
5 int main() { 6 FILE *p_file = NULL; 7 p_file = fopen("a.txt", "r"); 8 if (p_file) { 9 //文件操作语句10 fseek(p_file, 2, SEEK_SET);11 printf("%c ", fgetc(p_file));12 //rewind(p_file);13 fseek(p_file, 1, SEEK_CUR);14 printf("%c ", fgetc(p_file));15 //rewind(p_file);16 fseek(p_file, -3, SEEK_END);17 printf("%c ", fgetc(p_file));18 printf("\n");19 fclose(p_file);20 p_file = NULL;21 }22 return 0;23 }

 

 

fputs函数可以把一个字符串写入到文件中。

fgets函数可以从文件中读出一个字符串。

fprintf函数可以把数据以指定的格式写入到任何文件中。
fscanf函数可以从任何文件中以指定的格式读入数据到变量中。

转载于:https://www.cnblogs.com/libig/p/4741159.html

你可能感兴趣的文章
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>
openSuse beginner
查看>>
Codeforces 620E(线段树+dfs序+状态压缩)
查看>>
Windows7中双击py文件运行程序
查看>>
Market entry case
查看>>
bzoj1230 开关灯 线段树
查看>>
LinearLayout
查看>>
学习python:day1
查看>>