#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>


//stdin:标准输入文件指针,系统分配为键盘。
//stdout:标准输出文件指针,系统分配为显示器。
//stderr:标准错误输出文件指针,系统分配为显示器。
//stderr和stdout分配的都是显示器,但是stdout可以重定向输出到别的文件中,而stderr只能输出到显示器上,不可以重定向
void main(){
    printf("\n----------fprintf-----------------\n");
    printf("舞榭歌台风流总被雨打风吹去!\n");
    fprintf(stdout,"舞榭歌台风流总被雨打风吹去!\n");
    //显示器当作一个文件来操作
    //printf就是fprintf的特例,printf只能输出到显示器上,而fprintf可以往任何文件输出


    printf("\n-----------fputs----------------\n");
    puts("琼楼玉宇,高处不甚寒!\n");//输出字符串
    fputs("琼楼玉宇,高处不甚寒!\n", stdout);
    //puts就是fputs的特例,puts只能输出到显示器上,而fputs可以往任何文件输出

    printf("\n-----------fputc----------------\n");
    putchar('A');//输出一个字符
    printf("\n");
    fputc('A', stdout);
    printf("\n");
    //putchar就是fputc的特例,putchar只能输出到显示器上,而fputc可以往任何文件输出

    printf("\n-----------fscanf----------------\n");
    /*int num = 0;
    scanf("%d",&num);
    printf("num==%d\n",num);

    int numA = 0;
    fscanf(stdin,"%d", &numA);
    printf("numA==%d\n", numA);*/
    //scanf就是fscanf的特例,scanf只能扫描键盘,而fscanf可以扫描任意文件

    printf("\n-----------gets----------------\n");
    //char str1[30] = {0};
    ////gets(str1);//获取键盘输入的字符串,存储到str1中
    //fgets(str1, sizeof(str1)-1, stdin);//可以通过任何文件读取字符串,
    ////fgets(数组指针,字符串的长度,显示器);sizeof(str1)-1是因为要去掉字符串末尾的'\0'
    //fputs(str1, stdout);
    //gets就是fgets的特例

    printf("\n-----------getchar----------------\n");
    //char ch = '\0';
    ////ch = getchar();//getchar()从键盘缓冲区获取一个字符,存入变量
    //ch = fgetc(stdin);//fgetc可以从任意文件获取一个字符
    //fputc(ch, stdout);
    //getchar就是fgetc的特例


    printf("\n-----------_getw----------------\n");
    //宽字符文件操作函数
    int w = _getw(stdin);//_getw()每次必须获取4个字节
    //_getw()如果输入少于4个字节,他会一直等待---特别注意,回车符也是算一个字符的
    _putw(w,stdout);//_putw()没出会输出四个字节,不足的以空字符处理
    //_getw()获取2个汉字,1个汉字2字节,int用于装载两个汉字的二进制

    system("pause");
}