目录
标准IO的输入和输出
1.按字符输入
#include <stdio.h>
int fgetc(FILE *stream);//函数
int getc(FILE *stream); //宏
int getchar(void); //只能读取键盘输入
打开文件后读取,是从文件开头开始读的,读完一个后读写指针会后移(即一个一个读)
#include <stdio.h>
int main(){
FILE *fp;//打开文件
int rec;
fp = fopen("1.txt", "r");
if(fp==NULL){
perror("fopen");
return 0;
}
rec = fgetc(fp);//读取字符
printf("Get char = %c\n",rec);
rec = fgetc(fp);//读取字符
printf("Get char = %c\n",rec);
rec = fgetc(fp);//读取字符
printf("Get char = %c\n",rec);
return 0;
}
调用getchar会堵塞,等待从键盘输入字符
#include <stdio.h>
int main(){
FILE *fp;//打开文件
int rec;
fp = fopen("1.txt", "r");
if(fp==NULL){
perror("fopen");
return 0;
}
rec = fgetc(fp);
printf("Get char=%c\n",rec);
rec = getchar();
printf("Get STD input=%c",rec);
return 0;
}
2.按字符输出
#include <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
3.按行输入
#include<stdio.h>
char *gets(char *s);//只能从键盘读取(已经淘汰)
char *fgets(char *s,int size,FILE *stream);
-
成功时返回s,到文件末尾或出错时返回NULL
-
gets不推荐使用,容易造成缓冲区溢出(没有指定输入size,不要使用)
-
遇到'\n'或已输入size-1字符时返回,总是包含'\0'
-
fgets函数第三个参数可以是文件,也可以从键盘输入(stdin是标准IO的文件指针,指向键盘)
注意事项:
gets函数已被淘汰,不要使用。
fgets函数第二个参数注意大小
4.按行输出
#include<stdio.h>
int puts(const char*s);
int fputs(const char*s,FILE*stream);
-
成功时返回非负整数;出错时返回EOF
-
puts将缓冲区s中的字符串输出到stdout,并追加'\n'
-
fputs将缓冲区s中的字符串输出到stream,不追加'\n'
-
fputs函数第三个参数可以是文件,也可以是输出到屏幕(stdout是标准IO的文件指针,指向屏幕)
5.按指定对象输入输出
#include <stdio.h>
size_t fread(void *ptr,size_t size, size_t n, FILE *fp);
size_t fwrite(const void *ptr,size_t size, size_t n, FILE *fp);
void *ptr 读取(写)内容放的位置指针
size_t size 读取(写)的块大小
size_t n 读取(写)的个数
FILE *fp 读取(写)的文件指针
-
成功时返回读写对象个数;出错时返回EOF
-
既可以读写文本文件,也可读写数据文件(二进制文件)
-
效率高
注意事项:
文件写好后,文件指针指向文件末尾,这时候读不出来内容
解决办法:移动指针;关闭文件,重新打开