Linux C 文件输入输出函数 fopen()、getc()/fgetc()、putc()/fputc()、fclose()、fprintf()、fscanf()、fgets()、fputs()、fseek()、ftell()、fgetpos()、fsetpos() 详解
fopen(打开文件) | |
定义函数 |
FILE * fopen(const char * path,const char * mode); |
函数说明 |
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串: r 打开只读文件,该文件必须存在。 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。 |
返回值 |
文件顺利打开后,指向该流的 文件指针 就会被返回。若果文件打开失败则返回 NULL,并把错误代码存在 errno 中。 |
附加说明 |
一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。 |
范例 |
#include <stdio.h> int main(int argc, char **argv) |
getc(由文件中读取一个字符) | |
定义函数 |
int getc(FILE * stream); |
函数说明 |
getc()用来从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回 EOF。虽然 getc() 与 fgetc() 作用相同,但getc()为宏定义,非真正的函数调用。 注意: getchar() 与 getc(stdin) 作用相同。 |
返回值 |
getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 |
范例 |
参考 fgetc()。 #include <stdio.h> int main(int argc, char **argv) |
putc(将一指定字符写入文件中) | |
表头文件 |
#include <stdio.h> |
函数说明 |
putc()会将参数c转为 unsigned char 后写入参数 stream 指定的文件中。虽然 putc() 与 fputc() 作用相同,但 putc()为宏定义,非真正的函数调用。 |
返回值 |
putc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。 |
范例 |
参考fputc()。 #include <stdio.h> int main(int argc, char **argv) |
fprintf(格式化输出数据至文件) | |
定义函数 |
int fprintf(FILE * stream, const char * format,.......); |
函数说明 |
fprintf()会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定的文件中,直到出现字符串结束('\0')为止。 |
返回值 |
关于参数format字符串的格式请参考printf()。成功则返回实际输出的字符数,失败则返回-1,错误原因存于errno中。 |
范例 |
#include <stdio.h> int main(int argc, char **argv) |
执行 |
-100 3.141590 96 150 150 |
fscanf(格式化字符串输入) | |
定义函数 |
int fscanf(FILE * stream, const char *format, ....); |
函数说明 |
fscanf()会自参数stream的文件流中读取字符串,再根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结构存于对应的参数内。 |
返回值 |
成功则返回参数数目,失败则返回-1,错误原因存于errno中。 |
范例 |
#include <stdio.h> int main(int argc, char **argv) |
执行 |
10 0x1b aaaaaaaaa bbbbbbbbbb /*从键盘输入*/ 10 27 aaaaa |
fseek(移动文件流的读写位置) | |
定义函数 |
int fseek(FILE * stream, long offset, int whence); |
函数说明 |
fseek()用来移动文件流的读写位置。参数stream为已打开的文件指针,参数offset为根据参数 whence 来移动读写位置的位移数。 |
参数 |
whence为下列其中一种:
当 whence 值为 SEEK_CUR 或 SEEK_END 时,参数 offset 允许负值的出现。 下列是较特别的使用方式: 1) 欲将读写位置移动到文件开头时:fseek(FILE *stream, 0, SEEK_SET); // 等价于 rewind(stream); |
返回值 |
当调用成功时则返回0,若有错误则返回-1,errno会存放错误代码。 |
附加说明 |
fseek()不像 lseek() 会返回读写位置,因此必须使用 ftell() 来取得目前读写的位置。 |
范例 |
#include <stdio.h> int main(int argc, char **argv) |
执行 |
offset=5 offset=0 offset=10 |
Linux C 文件输入输出函数 fopen()、getc()/fgetc()、putc()/fputc()、fclose()、fprintf()、fscanf()、fgets()、fputs()、fseek()、ftell()、fgetpos()、fsetpos() 详解的更多相关文章
- matlab学习笔记5--低级文件输入输出函数
一起来学matlab-matlab学习笔记5 低级文件输入输出函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...
- 文件输入输出函数fgetc/fputc及fgets/fputs等文件指针位置的变化
文件打开后才可以对文件进行操作.也就是说,文件必须经历打开-操作-关闭的过程.如前所述,C语言对文件的操作都是通过调用标准I/O库函数来实现的.文件操作实际是指对文件的读写.文件的读操作就是从文件中读 ...
- 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用
//程序设计题:函数fun的功能是:将两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.例如:当 ...
- Linux C 程序 输入输出函数(THREE)
标准输入输出函数#include<stdio.h>stdio 是 standard input & output 的缩写 字符数据输入输出函数: putchar() , getch ...
- 第15.44节、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...
- ClouderManager集群在Linux里浏览器默认是英文,在Win里浏览器是中文,怎么更改?(图文详解)
不多说,直接上干货! 问题详情 在这里面如何英文改中文的吗? 莫非要把linux的语言环境给改了?? 我找找网页的语言字体怎么更改下 找到对应页面,修改成中文 解决办法 刷新下,即可 欢迎大家,加入我 ...
- C Primer Plus之文件输入/输出
文件 一个文件通常就是磁盘上的一段命名的存储区.但对于操作系统来说,文件就会更复杂一些.例如,一个大文件可以存储在一些分散的区段中,或者还会包含一些使操作系统可以确定其文件类型的附加数据. C将文件看 ...
- Linux C 文件操作函数(~上善止水~)
翻翻笔记,整理一下 C 语言中的文件操作函数 ~~~~~~,多注意细节,maybe 细节决定成败~ 1. fopen /* fopen(打开文件) * * 相关函数 open,fclose * * 表 ...
- linux下文件描述符的查看及分析
起因 近期在调试一个Android播放内核是遇到上层传递的是fd(file descriptor),但是在文件播放结束之后调用lseek却提示返回-1,errno=29(#define ESPIPE ...
随机推荐
- HDU2089 不要62[数位DP]
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 关于SSH的一些tricks
改善SSH登录速度 登录慢的原因有很多, 慢的症状也很多, 有些是出login慢, 有些是出password慢, 有些是输入完password后进提示符慢, 根据 http://superuser.c ...
- Understanding Binomial Confidence Intervals 二项分布的置信区间
Source: Sigma Zone, by Philip Mayfield The Binomial Distribution is commonly used in statistics in a ...
- visual studio 2015中的webapi生成helpPage,页面不显示方法说明问题解决
环境: vs2015.win7 参考:http://www.cnblogs.com/Erik_Xu/p/5638381.html 生成的help页面如下:,并没有显示控制器和方法. 原因是:新建项目时 ...
- MVC之前的那点事儿系列(10):MVC为什么不再需要注册通配符(*.*)了?
文章内容 很多教程里都提到了,在部署MVC程序的时候要配置通配符映射(或者是*.mvc)到aspnet_ISPAI.dll上,在.NET4.0之前确实应该这么多,但是.NET4.0之后已经不要再费事了 ...
- Gradle 10分钟上手指南
java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强大,但是过 ...
- jquery修改带!important的css样式
由于需求的需要,今天在用jquery修改一个弹出框的样式的时候,由于有一个按钮有padding-left:12px;导致内间距空出来的这一块颜色用普通的方式无法改变. 普通的jquery修改css的方 ...
- 直接启动tomcat时为tomcat指定JDK
第一种: 在windows环境下以批处理文件方式启动tomcat,只要运行<CATALINA_HOME>/bin/startup.bat这个文件,就可以启动Tomcat.在启动时,star ...
- Java transient关键字使用小记
哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transi ...
- C#汉字转拼音帮助类
using System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressi ...