C与指针——输入输出

发布于:2025-06-14 ⋅ 阅读:(27) ⋅ 点赞:(0)

常用格式

printf("%d,%o,%x,%u",d,d,d,d);
//整形数据,8进制,16进制,无符号int数据输出
printf("%.3f",d);//保留3位小数的输出
long long int data = 0x1111222233334444;
printf("%d",data);//这么写是错误的
printf("%ll",data);//这么写是正确的
printf("%#x",data);//这么写是错误的
printf("%#llx",data);//这么写是正确的

错误定位

当一个库函数出错时,errno会被重置

perror(const char* s);\\输出s: + errno 对应的错误信息
\\如果单独想要错误信息可以
char* e = strerror(errno);\\系统错误码转换为对应的错误信息字符串

输出缓冲区

一般输出缓冲区满的时候才刷新,也就是显示到屏幕上。但是有的输出我们可能希望立即刷新。

printf("do something");
fflush(stdout);\\立即刷新,不管是否输出缓冲区满

EOF不是一个字符,它并没有真实的写在文件的末尾

而是当文件中的最后一个字符都被读完的时候,如果再fgetc(),会返回EOF这个标识符。

FILE

1、这是一个数据结构,用于访问一个流。不要和文件混淆。
2、一个程序至少有三个流,标准输出流stdout,标准输入流stdin,标准错误流stderr.他们都对应一个指向FILE结构的指针。标准流不需要打开和关闭。
3、fopen 和 fclose用于打开/关闭一个流。通常是文件的操作,即当我们需要处理一个文件时,我们会打开一个对应的流,返回FILE*。

int fopen(const char* file,const char* mode);
mode:同样是指向以空字符结尾的字符串的指针,它指定了文件的打开模式。以下是一些常见的打开模式:
"r":以只读模式打开文件,文件必须存在。
"w":以写入模式打开文件,如果文件不存在则创建它;如果文件已存在,则清空文件内容。
"a":以追加模式打开文件,如果文件不存在则创建它;写入的数据会被追加到文件末尾。
"r+":以读写模式打开文件,文件必须存在。
"w+":以读写模式打开文件,如果文件不存在则创建它;如果文件已存在,则清空文件内容。
"a+":以读写模式打开文件,如果文件不存在则创建它;写入的数据会被追加到文件末尾,同时可以从文件开头读取数据。

常见IO操作

1、只用于stdout,stdin的输入输出(隐含使用了这两个流)
getchar();putchar();\\输入输出字符
gets();puts();\\输入输出一行
scanf();printf();\\格式输入输出。
2、适用所有流的
fgetc();fputc();
fgets();gputs();
fscanf();fprintf();

流控制

int fflush(FILE*);//刷新流的写缓存区
long ftell(FILE*);//返回当前流的读写指针距离流开始的偏移量。如果是二进制流则是字节偏移量,是文本流则是字节偏移量。
int fseek(FILE*,long,int from);//将流的读写指针跳转一定的偏移量。
from:
	SEEK_SET:从流的开始进行偏移
	SEEK_CUR:当前位置开始偏移
	SEEK_END:文件尾部
void rewind(FILE*);//将流的读写指针刷新到流的开始,并且清空所有错误标志。
int feof(FILE*);//当前流的读写指针是否已经在文件尾部(尾部并非是最后一个字节,而是最后一个字符已经被读完了才有的结果)
int ferror(FILE*);//流的读写操作中出现任何错误都返回真
void clearerr(FILE*);//清除所有的错误标识

网站公告

今日签到

点亮在社区的每一天
去签到