20240813嵌入式学习笔记

void foef(FILE *stream);
void ferror(FILE *stream);

文件定位:
fseek();ftell();rewind();
	int fseek(FILE *stream,long of offset,int whence);
	//偏移文件位置
		offset:文件偏移字节数。
			整数:正数向后(向末尾)偏移,负数向前(向开头)偏移
		whence:偏移起始位置
			SEEK_SET:从文件开头偏移
			SEEK_CUR:从当前位置偏移
			SEEK_END:最后一个字符的下一个位置偏移
		成功返回当前位置;失败返回-1。
	long ftell(FILE *stream);
	//计算当前位置到文件开头的字节数
		成功返回当前位置;失败返回-1。
	void rewind(FILE *stream);
	//定位到文件开头位置
	
缓冲区:
行缓冲、全缓冲、无缓冲
	行缓冲:大小1K byte,主要用于命令行人机交互(printf、puts)
				刷新条件:1.遇到 '\n'	--printf加'\n',否则在缓冲区不打印
						 2.缓冲区满;
						 3.程序正常结束;
						 4.fflush刷新;	--fflush(FILE *stream)
	全缓冲:大小4K byte,主要用于文件读写(fputs、fputc)
				刷新条件:1.缓冲区满;
						 2.程序正常结束;
						 3.fflush刷新;	--fflush(FILE *stream)
	无缓冲:大小0 byte,主要用于出错信息的输出
				不刷新直接输出

标准FILE流
	stdin:标准输入(scanf)
	stdout:标准输出(printf)
	stderr:标准错误,无缓冲,直接输出
printf("fail\n"); ==> fprintf(stderr,"fail");
fgetc(fp); ==> fgetc(stdin); (文件获取 >> 键盘获取)
fputc('char',fp); ==> fputc('char',stdout); (文件输出 >> 屏幕输出)

文件IO
	特点:
		1.没有缓冲机制
		2.操作对象,不是文件流,是文件描述符fd(0-1203)
			程序启动时自动打开三个文件:
				0:stdin
				1:stdout
				2:stderr
			新打开文件,文件描述符从3开始
	操作函数:
	open,read,write,close
		int open(const char *pathname,int flag,mode_t mode);
			pathname:文件路径
			flag:标志位,包含访问权限,多个权限按位或:
				O_RDONLY:只读
				O_WRONLY:只写
				O_RDWR:可读可写
				O_APPEND:在文件最后追加
				O_CREAT:新建文件(新建文件时,添加新参数mode_t mode)
				O_TRUNC:清空文件
			mode:
				--- rwx 0666
		操作成功返回文件描述符fd,操作失败返回-1
		int write(int fd,const void *buf,size_t count);
			fd:文件描述符
			buf:写入内容地址
			count:写入内容长度
		操作成功返回写入长度,操作失败返回-1
		size_t read(int fd,void *buf,size_t count);
			fd:文件描述符
			buf:写入的空间地址
			count:要读取的长度
		操作失败返回 -1,操作成功返回读取长度,到达文件结尾返回0
		通常通过获取read返回值来确定write写入的长度,防止多写和少写。
            尽量避免使用sizeof(buf)和strlen(buf)
		int close(int fd);
		成功返回0;失败返回-1

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值