文件是当今计算机系统不可或缺的部分。文件用于存储程序,文档,数据,书信,表格,图形,照片,等其它种类的信息,作为程序员,必须会编写创建文件和从文件中读写数据。
文件通常是指在磁盘或固态是的一段已经命名的缓冲区,例如我们经常使用的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);
}
在c语言中我们利用getc()和putc()函数进行文件里字符的输入和输出,语法如下所示:
ch = getc(fp);
putc(ch, fp);
getc函数是读取文件中的一个字符赋给ch。
putc函数是将ch写入文件中。
在文件中我们要进行字符串的输入和输出可以利用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函数一样自动添加换行符。
文件的格式化输入与输出函数为fscanf,fprintf函数其工作方式与scanf,printf类似。
语法如下所示:
fprintf(fp, "%s", str1);
fscanf(fp, "%d", &a);
在我们对文件进行读取时,经常需要改变读取的位置,在c语言中有两个函数可以便于我们进行这种操作,
文章篇幅较短,只实现了文件的部分操作,以后会有补充。
1、静态网页与动态比较: 1)静态网页: 优势:A、 对搜索引擎友好,被收录的质...
本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 1、EXPLAIN 做My...
hello你好呀我是灰小猿一个超会写bug的程序猿。 一听到面向对象这个词大家肯定都...
本文讲解基于点云LAS数据,在ArcGIS+CASS平台上生成等高线的方法。 扩展阅读 : ...
今年这种情况,有时候不找好下家还真不敢跳,这不,前段时间刚跳到新东家,刚办...
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。M...
使用合适的命令,你可以快速了解 Linux 系统上使用的命令以及执行的频率。 汇总 ...
在 Chrome 的 DevTools 中的控制台提供了一些 Debug 专用的函数,每一个都身怀绝...
# -------------------------第一题---------------------------# number input ...
1、git冲突的场景 情景一:多个分支代码合并到一个分支时; 情景二:多个分支向...