C语言基础部分-文件操作

网友投稿 670 2022-05-29

文件操作

基本说明

文件:

文件指存储在外部介质(如磁盘磁带)上数据的集合。 操作系统是以文件为单位对数据进行管理的。

#include #include int main(){ FILE *fp; fp=fopen("./file.txt","r+"); if(NULL==fp){ perror("this is open problem"); goto end; } end: system("pause"); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include #include int main(){ FILE *fp; fp=fopen("./file","r+"); if(NULL==fp){ perror("this is open problem"); goto end; } end: system("pause"); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

perror

语法: #include void perror( const char *str );

1

2

3

perror()函数打印str(字符串)和一个相应的执行定义的错误消息到全局变量errno中.

#ifndef _FILE_DEFINED struct _iobuf { char *_ptr;//下一个要读取的字符的地址 int _cnt;//剩余字符 char *_base;//缓冲区基地址 int _flag;//文件标识位 int _file;//文件描述符 int _charbuf;// int _bufsiz;//缓冲区大小 char *_tmpfname; }; typedef struct _iobuf FILE; #define _FILE_DEFINED #endif

1

2

3

4

5

6

7

8

9

10

11

12

13

14

“r” (只读)为输入打开一个文本文件“w” (只写)为输出打开一个文本文件“a” (追加)向文本文件尾增加数据“rb” (只读)为输入打开一个二进制文件“wb” (只写)为输出打开一个二进制文件"ab“ (追加)向二进制文件尾增加数据"r+“ (读写)为读/写打开一个文本文件"w+” (读写)为读/写建立一个新的文本文件"a+” (读写)为读/写打开一个文本文件"rb+“ (读写)为读/写打开一个二进制文件“wb+“ (读写)为读/写建立一个新的二进制文件“ab+” (读写)为读/写打开一个二进制文件

文件函数:

分类 函数名 功能 打开文件 fopen() 打开文件 关闭文件 fclose() 关闭文件 文件定位 fseek() 改变文件位置指针的位置 Rewind() 使文件位置指针重新至于文件开头 Ftell() 返回文件位置指针的当前值 文件状态 feof() 若到文件末尾,函数值为真 Ferror() 若对文件操作出错,函数值为真 Clearerr() 使ferror和feof()函数值置零 文件读写 fgetc(),getc() 从指定文件取得一个字符 fputc(),putc() 把字符输出到指定文件 fgets() 从指定文件读取字符串 fputs() 把字符串输出到指定文件 fread() 从指定文件中读取数据项 fwrite() 把数据项写到指定文件中 fscanf() 从指定文件按格式输入数据 fprintf() 按指定格式将数据写到指定文件中

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

fclose(文件指针);

函数功能: 使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作。

返回值:关闭成功返回值为0;否则返回EOF(-1) 。

fputc函数

函数调用:fputc ( ch,fp ) ;

函数功能: 将字符(ch的值)输出到fp所指向的文件中去。

返回值:如果输出成功,则返回值就是输出的字符;如果输出失败,则返回一个EOF。

fgetc函数

函数调用:ch=fgetc(fp);

函数功能: 从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。

返回值:读取成功一个字符,赋给ch。如果遇到文件结束符,返回一个文件结束标志EOF 。

#include #include int main(int argc,char *argv[]){ FILE *fp; int i; for(i=0;i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#include #include int main(int argc,char *argv[]){ FILE *fp; int i; for(i=0;i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#include #include int main(int argc,char *argv[]){ FILE *fp; //int i; //for(i=0;i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#include #include int main(int argc,char *argv[]){ FILE *fp; //int i; //for(i=0;i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

注意

关闭文件

主动刷新

缓冲区写满

#include #include int main(int argc,char *argv[]){ FILE *fp; //int i; //for(i=0;i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

C语言基础部分-文件操作

33

34

35

36

37

38

39

40

fwrite和fread

#include #include #include int main(int argc,char *argv[]){ FILE *fp; char buf[128]; int ret; fp=fopen(argv[1],"r+"); if(NULL==fp){ perror("this is open problem"); goto end; } strcpy(buf,"helloworld"); ret=fwrite(buf,sizeof(char),strlen(buf),fp); fclose(fp); end: system("pause"); }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

##文件使用方式

文件使用方式     含   义 “r” (只读)为输入打开一个文本文件 “w” (只写)为输出打开一个文本文件 “a” (追加)向文本文件尾增加数据 “rb” (只读)为输入打开一个二进制文件 “wb” (只写)为输出打开一个二进制文件 "ab“ (追加)向二进制文件尾增加数据 "r+“ (读写)为读/写打开一个文本文件 "w+” (读写)为读/写建立一个新的文本文件 "a+” (读写)为读/写打开一个文本文件 "rb+“ (读写)为读/写打开一个二进制文件 “wb+“ (读写)为读/写建立一个新的二进制文件 “ab+” (读写)为读/写打开一个二进制文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

区别

r+

写入\n .实际存储的是\r\n

读取时,\r\n会变成\n

rb+

写入\n.实际存储的是\n

读取时,\n读取出来的是\n

fseek函数(一般用于二进制文件)

函数功能:改变文件的位置指针。

函数调用形式:fseek(文件类型指针,位移量,起始点)起始点:

文件开头 SEEK_SET 0

文件当前位置 SEEK_CUR 1

文件末尾 SEEK_END 2

位移量:以起始点为基点,向前移动的字节数。一般要求为long型。

fseek函数应用举例 fseek(fp,100L,0); 将位置指针移到离文件头100个字节处。 fseek(fp,50L, 1); 将位置指针移到离当前位置50个字节处。 fseek(fp,50L, 2); 将位置指针从文件末尾处向后退10个字节。

1

2

3

4

5

6

7

8

9

10

C 语言

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:有人工裁判,就会有争执
下一篇:几种数据库存储引擎的对比
相关文章