标准IO的字符输入输出
按字符输入
int fgetc(FILE *stream); //成功时返回读取的字符;若到文件末尾或出错时返回EOF(-1)
int getc(FILE *stream); //宏
int getchar(void);
成功时返回读取的字符;若到文件末尾或出错时返回EOF(-1),
getchar()等同于fgetc(stdin)
getc和fgetc区别是一个是宏一个是函数
注意事项:
1函数返回值是int类型不是char类型,主要是为了扩展返回值的范围。
2 tdin 也是FILE *的指针,是系统定义好的,指向的是标准输入(键盘输入)
3 打开文件后读取,是从文件开头开始读。读完一个后读写指针会后移。读写注意文件位置!
4 调用getchar会阻塞,等待你的键盘输入
按字符输出
int fputc(int c,FILE *stream);
int putc(int c,FILE *stream);
putchar相当于fputc(c,stdout)
遇到:Bad file descriptor 很可能是文件打开的模式错误(只读模式去写 只写模式去读)
按行输入和输出
按行输入
char *gets(char *s);
char *fgets(char *s,int size,FILE *stream);
成功时返回s,到文件末尾或出错时返回NULL
gets不推荐使用,容易造成缓冲区溢出
遇到'\n'或已输入size-1个字符时返回,总是包含'\0'
当一行字符数小于size-1时,会在末尾加上'\n'
按行输出
int puts(const char*s);
int fputs(const char*s,FILE *stream);
成功时返回非负整数;出错时返回EOF
puts将缓冲区s中的字符输出到stdout,并追加'\n'
fputs将缓冲区s中的字符输出到stream,不追加'\n'
二进制读写概念
按对象读写
size_t fread(void *ptr,size_t size,size_t n,FILE *fp);
void *ptr读取的内容放的位置指针 size_t size读取的块大小 size_t 读取的个数 FILE *fp 读取的文件指针
size_t fwrite(const void *ptr,size_t size,size_t n,FILE *fp);
既可以读写文本也可以读写二进制文件