Linux标准IO相关操作函数整理

1. 标准I/O输入与输出

标准IO是由C语言提供的,所有接口基本上在stdio.h,标准IO中有一个FILE指针,每一个FILE指针都对应有一个打开的文件
缓冲:其实就是一块内存空间,使用标准IO打开文件不会立即送往操作系统,而是先存在缓冲中
缓冲分类:
1.行缓冲:遇到\n或者说满足一行就会把数据送往操作系统
2.全缓冲:直到缓冲区满才会把数据写出区
3.无缓冲:有数据直接写出
FILE指针默认每一进程有3个流是默认打开的:
stdin 标准输入
stdout 标准输出
stderr 标准错误

基本操作:
ps:主要运用于文件和终端的输入输出上
1.fopen 文件打开函数
FILE *fopen(const char *path, const char *mode);
path:带路径的文件名
mode:
r:只读 r+ :可读可写,光标停留在文件开头
w:只写 w+ :可读可写,如果文件不存在则创建文件,如果文件存在会把文件清空(光标在开头)
a:以追加方式打开 a+ :可读可写并以追加方式打开如果文件不存在,创建。
返回值: 成功返回FILE指针,失败返回NULL 并且errno被设置
文件的结束标识:EOF,不能操作它
fclose 关闭文件流
#include <stdio.h>
int fclose(FILE *fp);
fp:要关闭的FILE指针
返回值:成功返回0 失败返回-1(EOF)
注意:在fclose之前默认有一次fflush

2.fread–二进制读取和输出 input/output

	size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
		从stream中读取nmemb块,每一块都是size个字节,把它存储到ptr指向的内存空间中
		ptr:读取到的内容存储的地址
		size:读取每一块的字节数大小
		nmemb:有nmemb个记录
		stream:打开的文件指针,你要从哪里读
		返回值:成功返回,成功读取的记录数
			   失败,返回<=0
 fwrite
	 size_t fwrite(const void *ptr, size_t size, size_t nmemb,
                 FILE *stream);
			把ptr指向的内存空间中的内容写入到strenm中,一共有nmemb块,每一块的大
			小是size
			ptr:要写入文件的内容首地址
			size:要写入文本的字节数(每一块的大小)
			nmemb:写入文件的快数
			stream:要被写入的文件

3.fseek --定位文件流指针

	 int fseek(FILE *stream, long offset, int whence);
			把光标定位在whence开始,偏移offset个字节
			stream:打开的文件指针,要重定位光标的文件
			offset:文件偏移量
			whence:偏移起始位置
					SEEK_SET:从文件开始
					SEEK_END:文件末尾
					SEEK_CUR:当前位置
			返回:成功返回0
				  失败返回-1 errno被设置

4. fflush - 清空缓冲区

		 int fflush(FILE *stream);
			把缓冲区中剩下的内容清空,并且写入文件流中
			stream:缓冲区的内容写入stream文件流中
			返回值:	成功返回0,失败返回-1	

5.获取字符

	    int getc(FILE *stream);
		int fgetc(FILE *stream);//getc与fgetc是等价的,都是从stream流中获取一个字符,然后通过返回值返回
		int getchar(void);//getchar是标准输入中获取一个字符
		int c=fgetc(fp);
				  
		int putchar(int c);//输出参数字符c 输出在标准输出
		int putc(int c, FILE *stream);
		int fputc(int c, FILE *stream);//输出在文件流stream中
			返回:输出的一个字符

6.字符串的输出

	   char *fgets(char *s, int size, FILE *stream);
			从文件流stream中获取字符串,大小为size,存储到s指向的地址中
			返回值L:成功,返回获取到的字符串的首地址,
					失败返回NULL
			ps:最多只能从文件stream中读n-1个字节的大小,最后一个字节用来存储'\0'
	   
	   int fputs(const char *s, FILE *stream);
			功能:把s中存储的内容,输出到文件流stream中
			s:存储的内容
			stream:要写入的文件流指针
			ps:fputs不会把最后字符串的'\0'写入文件流中
			返回值:成功返回一个非负数
					失败返回-1
	   
	   char *gets(char *s);//gets没有限制字符个数,从标准输入中获取的字符串,
							一直s指向的空间后面存储,容易导致段错误
	   int puts(const char *s);//把字符串s输出到标准输出中
				  返回值:成功返回一个非负数
						失败返回-1(失败指的是文件读或者写发生错误或者文件已经读完了)
			ps: gets是可以接收空格的字符串
				gets遇到\n就停止,并且丢弃遇到的\n
				fgets遇到\n就停止,并且默认在末尾最后一个字节添加'\0'
				puts:会自动在输出的字符串后面添加\n
		ex.使用标准IO拷贝文件的代码		  

7.其他函数

	feof  检查光标是否达到文件尾
		int feof(FILE *stream);
			  返回值:如果到达文件尾,返回1
				   	  否则返回0
		long ftell(FILE *stream);
				功能:返回光标所在stream中距文件开头的偏移量
		int fgetpos(FILE *stream, fpos_t *pos);
			功能:实现获取文件流光标的位置
			pos:通过参数传回当前位置是pos
			返回值:成功返回0
					失败返回-1 errno被设置
		int fsetpos(FILE *stream, fpos_t *pos);
			pos:要设置的文件光标位置
			返回值:成功返回0
					失败返回-1 errno被设置
		void rewind(FILE *stream);
			功能:把文件光标重置为文件开始初

8.格式化输入与输出

		   #include <stdio.h>
			int scanf(const char *format, ...);
				默认是从标准输入上获取字符
				控制字符:%d   后面的参数应该是int* 空白字符标识输入结束
						 %lf
						 %c   接收空白字符的
						 %s   不接收空格,遇到空白字符就结束
			int fscanf(FILE *stream, const char *format, ...);
				功能:从文件流中stream读取内存
				返回值:返回成功匹配到的个数
			int sscanf(const char *str, const char *format, ...);
				功能:从字符串中读取格式化串中的内容
				
	格式化输出:		
		#include <stdio.h>
		int printf(const char *format, ...);//按照format指定的格式默认输在标准输出是上
		int fprintf(FILE *stream, const char *format, ...);//输出到指定文件流中
		int sprintf(char *str, const char *format, ...);//输出到指定的字符串中
		返回值:返回成功输出额字符个数  hello--->5
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值