如何卖出期权,并得到职能的工作?如何卖出期权,并得到职能的工作?(How do the puts a

2019-05-12 11:14发布

main()
{
char name[20];

printf("enter your name\n");

scanf("%s",name);       
printf("%s",name);

gets(name);
puts(name);
}

输入:森柏萨哈

产量

森柏萨哈

这里提出只使用取自输入gets()

因为,如果我省略此printf()输出将是

萨哈

所以在这里提出不打印通过任何代价scanf()

main()
{
char color[20];

printf("enter your name\n");

scanf("%s",color);   
puts(color);
}

但在这里puts()使用取自输入scanf()也。

Answer 1:

这里的问题是,对于像输入

ABC XYZ

代码

  scanf("%s",name);

读取“ABC”部分和“XYZ”被留在输入缓冲器中。 后来gets()读取和puts()打印出。 当你没有一个newlineprintf()输出不会刷新和成果puts() 追加到输出流缓冲区,一旦程序执行完毕,整个输出缓冲区刷新干脆打印整个输入在一起。

所以,在其他情况下,当你放下printf()读出的值scanf() (“ABC”)不打印。

为了详细说明, %sscanf()无法读取空格分隔的投入,它停止在遇到的第一个空格读数。

引用C11 。 章§7.21.6.2

s匹配的非空白字符的序列。 [...]

这表明,为%sscanf()停止读取在遇到第一个空格。

即将第二种情况下,当输入不包含空白,(即,不是空格分隔输入给出), scanf()读取整个输入(高达终止新行),因此,无论是printf()puts()输出。

这就是说, 不要使用gets() ,这是危险的 。 使用fgets()代替。



文章来源: How do the puts and gets functions work?
标签: c scanf gets puts