fgets (buf, sizeof(buf), stdin);

2025-02-25 06:16:08
推荐回答(3个)
回答1:

fgets (buf, sizeof(buf), stdin); 是从标准输入设备读入一行字符串,包括空白空格直到新行键,含新行键。字符串存放到 buf 里。

sscanf (buf, "%i", &option); 是从字符串buf的开始处,按整型读入一个数。
----------------------------------
可以用 scanf,直接读入 一个整型数:
scanf("%i",&option);
但仍要清理掉一行中剩余的东西:
fflush(stdin);
否则,下面一个输入会错。

如果 这行里剩余的东西要派别的用,就不能简单地用fflush(stdin);清除。
-----------------------
一般用fgets (buf, sizeof(buf), stdin); 读一行内容存放起来,是为了输入一次,而多次应用。

回答2:

fgets(buf,
n,
file)
函数功能:从
目标文件流
file
中读取
n-1
个字符,放入以
buf
起始地址的内存空间中。
楼主的函数调用是这个意思:
首先,s
肯定是一个字符数组。
该调用从
标准输入流
stdin
(也就是键盘输入)读入
s
数组的大小(sizeof(s))再减
1
的长度的字符到
buf
所指的内存空间中(前提是buf已经申请好空间了)

回答3:

不能替换,fgets是从数据流里读取一字符串,sscanf是从指定的buf里面读出相应格式的数据,而scanf是从stdin里面读入格式化数据,printf是将格式完整数据写入到stdout