求问这串代码中的 " fp=stdin; " 是什么意思?文件指针被标准输入文件赋值是代表什么含义?
stdin就是一个FILE *类型的常量值
意思就是程序运行的时候,如果没有命令行参数,fp这个变量的值就取stdin(这将导致后续比如fscanf(fp,...)从标准输入读取)
【隐含后续如果有命令行参数,可能就把某个命令行参数作为一个文件名,并使用fp=fopen函数打开,(这将导致后续比如fscanf(fp,...)从文件中读取)】
"fp=stdin;" 这行代码的意思是将标准输入文件 stdin 的文件指针赋值给一个名为 fp 的变量。stdin 是一个已经定义好的文件指针,它代表标准输入流,即键盘输入。使用这行代码后,就可以通过 fp 来操作标准输入流了。
具体来说,如果有以下的读取用户输入的代码:
char str[100];
fgets(str, 100, stdin);
可以改写成:
char str[100];
FILE* fp;
fp = stdin;
fgets(str, 100, fp);
第二种写法与第一种写法的效果是一样的,都是从标准输入流中读取用户输入并存在 str 数组中。
在实际开发中,我们可能需要将文件指针赋值给其他变量,或者将不同的文件指针分别赋值给不同的变量,以进行文件操作和管理。