当前位置:主页 > 查看内容

c语言文件的基本操作

发布时间:2021-09-27 00:00| 位朋友查看

简介:前言 文件是当今计算机系统不可或缺的部分。文件用于存储程序文档数据书信表格图形照片等其它种类的信息作为程序员必须会编写创建文件和从文件中读写数据。 什么是文件 文件通常是指在磁盘或固态是的一段已经命名的缓冲区例如我们经常使用的stdio.h就是一个……

前言

文件是当今计算机系统不可或缺的部分。文件用于存储程序,文档,数据,书信,表格,图形,照片,等其它种类的信息,作为程序员,必须会编写创建文件和从文件中读写数据。


什么是文件?

文件通常是指在磁盘或固态是的一段已经命名的缓冲区,例如我们经常使用的stdio.h就是一个文件,c语言将文件看成一段连续的字节,每个字节都可被单独读书,c提供了两种模式:文本模式和二进制模式。

一、如何打开文件和关闭文件

打开文件

在c语言中我们一般利用fopen函数来打开文件,该函数声明在<stdio.h>库中。
调用该函数的一般形式:

FILE * fp;
fp = fopen(char *str1, "str2");

其中str1指向一个字符串,该字符串为该文件的文件名(即路径),第二个参数为c语言规定的模式字符串。
详情如下:
在这里插入图片描述
这里请注意,如果使用w模式打开一个现有文件,该文件的内容会被删除。
程序成功打开文件后,fopen函数返回文件指针,其他I/O函数可以使用这个指针指定该文件,即上述代码中的fp,FILE是c语言的一种结构体,它的定义在stdio.h库中。其中包含了缓冲区信息等,这里不多赘述。
若是我们打开文件失败,这里fopen()函数会返回一个空指针。

关闭文件

我们在对文件进行完操作之后,要关闭文件,防止文件内容被破坏,在c语言中我们一般用fclose()函数关闭文件,形式如下:

fclose(fp);

其中fp为文件指针,必要时会刷新缓冲区,当磁盘已满,移动硬盘被拔出或者出现I/O错误时文件会关闭失败,所以对于比较正式的程序我们应该检查文件是否关闭,当文件成功关闭时fclose函数返回0,否则返回EOF(这里eof为文件结尾)。
判断代码如下:

if (fclose(fp) != 0) {
	printf("Error in closing file %s\n", str1);
}

二、文件的读写操作

1.输入输出字符

在c语言中我们利用getc()和putc()函数进行文件里字符的输入和输出,语法如下所示:

ch = getc(fp);
putc(ch, fp);

getc函数是读取文件中的一个字符赋给ch。
putc函数是将ch写入文件中。

2.输入输出字符串:

在文件中我们要进行字符串的输入和输出可以利用fgets函数和fputs函数,语法如下所示:

fgets(buf, stlen, fp);

fgets函数的第一个参数和gets函数相同表示存储输入的地址(如上述代码中的buf是一个char型数组的名称),第二个参数是一个整数,表示带输入字符串的大小,最后一个参数为文件指针。
fgets函数读取输入直到第一个换行符的后面,或者读到文件的末尾——EOF,或者读取到stlen-1个字符,然后fgets函数在末尾添加一个空字符使之成为一个字符串,故我们读取的字符串长度为字符数加上一个空字符。 注意,如果fgets函数在读到字符上限之前已经读完一行,它为将换行符放到空字符前面。fgets在遇见eof即文件结尾时会返回null

fputs(buf, fp)

fputs函数的两个参数实际意义与fgets相同,它的作用是将字符串写入指定的文件中,其中由于fgets函数会保留换行符,所以fputs函数不会像puts函数一样自动添加换行符。

3.格式化输入与输出

文件的格式化输入与输出函数为fscanf,fprintf函数其工作方式与scanf,printf类似。
语法如下所示:

fprintf(fp, "%s", str1);
fscanf(fp, "%d", &a);

4.文件读写移动操作

在我们对文件进行读取时,经常需要改变读取的位置,在c语言中有两个函数可以便于我们进行这种操作,

  1. ftell函数:
    用来取文件当前位置。其一般形式为:
    long n;
    n = ftell(fp);
    它的返回值时一个长整型,表示当前的读写位置(从文件开始处到现在的字节数),调用正确返回当前读写位置,错误返回-1L.
  2. fseek函数
    fseek函数用来改变文件指针的当前位置。其一般形式为:
    fseek(fp,offset,from);
    offset:位移量,类型为long型,表示以from为起点移动的量相对值(字节数)。
    from:移动的起始位置。
    from是一种模式,如下所示:
    在这里插入图片描述

总结

文章篇幅较短,只实现了文件的部分操作,以后会有补充。

;原文链接:https://blog.csdn.net/chabuduoxs/article/details/116068494
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐