最近发现看的多又忘的多,懂了也不知道会不会说,仿佛没学一样,还是写一下想看不用再翻字典了..
FILE
是一个数据结构,用于访问一个流,每一个流都有一个相应的FILE与它关联
家族名 | 作用 | 可用于所有的流 | 只用于stdin 和 stdin | 内存中的字符串 |
---|---|---|---|---|
getchar | 字符输入 | fgetc,getc | getchar | 用指针下标引用或间接访问 |
putchar | 字符输出 | fputc,putc | putchar | 同上 |
gets | 文本行输入 | fgets | gets | 用strcpy函数复制读取 |
puts | 文本行输出 | fputs | puts | 同上 |
scanf | 格式化输入 | fscanf | scanf | sscanf |
printf | 格式化输出 | fprintf | printf | sprintf |
fopen函数打开流:
FILE* fopen(char const* name,char const* mode);
r:以只读方式打开,如果要打开的文件不存在,则打开失败
r+:以读写的方式打开,如果要打开的文件不存在,则打开失败
w:以只写的方式打开,如果要打开的文件不存在,就创建该文件
w+:以读写的方式打开,如果要打开的文件不存在,就创建该文件
a:以追加写的方式打开,即该文件的末尾处开始写,如果要打开的文件不存在,就创建该文件
a+:以读写的方式打开,从头开始读,从尾开始写,如果要打开的文件不存在,就创建该文件
1.字符I/O
int getchar(void);
从标准输入流(比如键盘)中读取一个字符
一般习惯写
char ch=getcahr();
int putchar(int char);
将字符c写入标准输出流中(比如屏幕)
1| int getc(FILE *stream);
int fgetc(FILE* stream);
2| int putc(int c,FILE *stream);
int fputc(int c,FILE* stream);
- 从文本流stream中读取字符,将stream替换为标准输入流(stdin)即为函数getchar
- 将字符c写入文本流stream中,若把stream替换为标准输出流(stdout),即为putchar函数
另外,fgetc,fputc函数与getc,putc的参数和作用相同。
2.行I/O
char *gets(char *str);
int puts(const char* str);
从标准输入流(键盘)中读取一行字符串,存入字符串str中(并不在缓冲区中存储结尾的换行符)
将字符串str写入标准输出流(屏幕)中(在字符串写入后向输出再添加一个换行符)
char *fgets(char *str,int num,FILE*stream);
int fputs(const char *str,FILE*stream);
从文本流stream中读取num个字符放入字符串str中,将stream替换为stdin与函数gets的效果相同
将字符串str写入文本流stream中,将stream替换为stdout与函数puts的效果相同
3.格式化I/O
int fscanf(FILE *stream,const char *format,...);
int fprintf(FILE *stream,const char *format,...);
从文本流stream中格式化读取内容
将内容格式化写入文本流stream中
4.二进制I/O
size_t fread(void *str,size_tsize,size_t count,FILE *stream);
从stream中读取count个基本单元,一个单元有size字节的内容到str中
该函数的返回值是实际读取到的count数
size_t fwrite(const void *str,size_t size,size_t count,FILE *stream);
将str中的内容写count个单元,一个单元size个字节的内容到stream中
该函数的返回值是实际写入的count数
5.流错误函数
int feof(FILE* stream);
int ferror(FILE* stream);
void clearerr(FILE* stream);
如果流在文件末尾,feof返回真
ferror检查文件的读取是否出错,若出错,返回非零值1,否则,返回0
clearerr对指定流的错误标志进行重置