c语言中输入/输出采用流的概念,流就是内存中的一块区域。当一个程序运行是,需要有数据的流动,或者是程序需要一些外部提供的参数来进行运算,或者是程序经过运算产生一些数据要进行存储或传递到别的程序等,这也就是我们说的输入流(前者)和输出流(后者)。也就是说程序关心的是创建正确的输出字节数据,以及正确的解释从输入读取的字节数据。
既然流是有一块缓冲区,那么它就一定有缓冲作用。当操作系统能够确定当前输入/输出跟交互没有关系时,采用完全缓冲方式(当缓冲区满了以后再进行刷新);例如当从标准输入时,就不会采用完全缓冲,见代码:
viod f(){
printf("请输入数据: ");
scanf("%d",&n);
}
当我们输入时,屏幕上会先显示“请输入数据: ”,这也就是说在我们从标准输入输数据是,标准输出也会同步刷新。
在C语言中流分为文本流和二进制流,二进制流就是把内存中的东西直接进行复制,不会在进行转换,一般编写网络程序时会用到。C语言中的stdio.h主要提供的操纵流的函数。
打开流
FILE *fopen(char const *name, char const *mode);
FILE *freopen(char const *name, char const *mode, FILE *stream);
关闭流
int fclose(FILE * f);
单个字符输入:
int getchar();
int fgetc(FILE *stream);
int getc(FILE *stream);
单个字符的输出:
int putchar(int ch);
int fputc(int ch, FILE *stream);
int putc(int ch, FILE *stream);
未格式化的行输入/输出:
char *fgets(char *buffer, int buffer_size, FILE *stream);
char *gets(char *buffer);
int fputs(char *buffer, FILE *stream);
int puts(char *buffer);
格式化的行输入输出:
int printf(char const *format,...);
int fprintf(FILE *stream, char const *format, ...);
int sprintf(char *buffer, char const *format, ...)
int scanf(char const *format, ...);
int fscanf(FILE *stream, char const *format, ...);
int scanf(char const *string,char const *format, ...);
错误报告:
void perror(char const *message);//当调用标准库函数失败时,编译器会把一个外部整型变量errno(在errno.h中)设置值,然后传递给用户,提示出错原因,perror简化了这个过程,当出错时,perror输出message的内容,然后一个分号和一个空格,然后打印用于解释errno错误代码的信息。
void exit(int status);//参数用EXIT_SUCCESS或EXIT_FAILURE
既然流是有一块缓冲区,那么它就一定有缓冲作用。当操作系统能够确定当前输入/输出跟交互没有关系时,采用完全缓冲方式(当缓冲区满了以后再进行刷新);例如当从标准输入时,就不会采用完全缓冲,见代码:
viod f(){
printf("请输入数据: ");
scanf("%d",&n);
}
当我们输入时,屏幕上会先显示“请输入数据: ”,这也就是说在我们从标准输入输数据是,标准输出也会同步刷新。
在C语言中流分为文本流和二进制流,二进制流就是把内存中的东西直接进行复制,不会在进行转换,一般编写网络程序时会用到。C语言中的stdio.h主要提供的操纵流的函数。
打开流
FILE *fopen(char const *name, char const *mode);
FILE *freopen(char const *name, char const *mode, FILE *stream);
关闭流
int fclose(FILE * f);
单个字符输入:
int getchar();
int fgetc(FILE *stream);
int getc(FILE *stream);
单个字符的输出:
int putchar(int ch);
int fputc(int ch, FILE *stream);
int putc(int ch, FILE *stream);
未格式化的行输入/输出:
char *fgets(char *buffer, int buffer_size, FILE *stream);
char *gets(char *buffer);
int fputs(char *buffer, FILE *stream);
int puts(char *buffer);
格式化的行输入输出:
int printf(char const *format,...);
int fprintf(FILE *stream, char const *format, ...);
int sprintf(char *buffer, char const *format, ...)
int scanf(char const *format, ...);
int fscanf(FILE *stream, char const *format, ...);
int scanf(char const *string,char const *format, ...);
错误报告:
void perror(char const *message);//当调用标准库函数失败时,编译器会把一个外部整型变量errno(在errno.h中)设置值,然后传递给用户,提示出错原因,perror简化了这个过程,当出错时,perror输出message的内容,然后一个分号和一个空格,然后打印用于解释errno错误代码的信息。
void exit(int status);//参数用EXIT_SUCCESS或EXIT_FAILURE