要在c中输入输入字符串,我们可以选择2种方式(根据我的知识,如果我遗漏了某些内容,请添加更多)
char name[10];
scanf(" %s",name); // First case
scanf("%[\n]s",name); // Second case
第一个将考虑字符串直到第一个空格,第二个将完整的句子,直到新的换行作为一个字符串,但要接受输入我们需要即兴表达第二个语句
scanf(" %[\n]s",name);
我的问题是这里有多余的间距? 因为有时候我的编译器会表现正常,即使我将删除' s'来自scanf声明,并且在'%'之前没有额外的间距但有时它不会工作。
答案 0 :(得分:1)
%
运算符之前的空格将使得删除输入字符串之前的任何空格以及%
运算符之后的格式说明符对输入的影响。< / p>
Ex:用" %[^\n]"
输入的“\ n \ t Hello World”将被记录为“Hello World”。
答案 1 :(得分:0)
如果空白字符留在第一个输入流中并且被下一个输入scanf
错误地读取:要从输入流中删除空白字符,请在格式字符串之前使用空格或使用fflush
(stdin)功能