fscanf函数的正确调用形式
    fscanf函数是一个标准库函数,用于从输入流中读取格式化的数据。它的调用形式如下:
    int fscanf(FILE *stream, const char *format, ...);
    其中,stream是指向输入流的指针;format是一个格式化字符串,用于指定读取的数据类型和格式;最后的省略号表示根据format字符串中指定的格式,读取相应的值并存储到不定数量的变量中。
    1. 输入流指针stream
    输入流通常指的是文件指针,也就是文件在内存中的运行时表示。在C中,文件指针通常由fopen函数返回,它指向的是打开的文件。
    2. 格式化字符串format
    格式化字符串是一个以%开头的字符串,它包含了读取数据的指令和数据类型。格式化字符串用来描述输入流中数据的格式,其语法类似于printf函数的格式化字符串。例如,下面的格式
字符串用来读取一个整数:
    "%d"
    其中,%d表示读取一个十进制整数。
    通过格式化字符串,我们可以指定多种数据类型和格式,如下表所示:
    格式说明 | 描述
    -------------|----------------------
    %c          | 读取单个字符
    3. 变量列表
    变量列表是以省略号表示的参数列表,用来存储从输入流中读取的数据。它包含了一些变量,这些变量的类型与格式化字符串中指定的数据类型相对应。
    变量列表是一个不定参数列表,其类型和数量取决于格式化字符串中指定的数据类型和数
量。例如,如果要读取两个整数,则变量列表应该包含两个整型变量:
    int a, b;
    fscanf(fp, "%d %d", &a, &b);
    其中&运算符用于取变量的地址,这是因为fscanf函数需要将数据存储到变量中。
    4. 返回值
fopen函数失败    fscanf函数的返回值是成功读取的数据项个数,即读取并成功存储到变量中的项数,如果读取失败,则返回-1;如果已经到达文件结尾,则返回EOF(常量-1)。
    下面是一些fscanf函数的使用示例:
    1. 读取整型变量x
    2. 读取一个整型数组a和数组元素个数n
    3. 读取一个浮点型变量y和一个字符串s
    4. 读取一个文本文件,并分别输出每行的内容
    char buf[100];
    while(fgets(buf, 100, fp) != NULL){
        printf("%s", buf);
        fflush(stdout); // 刷新输出缓冲区
    }
    总结:
    格式化字符串是一个以%开头的字符串,它包含了读取数据的指令和数据类型。