在c编程时成功扫描字符串后不扫描字符。
char s[10],c;
scanf("%s",s);
scanf("%c",&c);
printf("%s\n",s);
printf("%c",c);
答案 0 :(得分:4)
scanf
手册:
说明符c:
匹配长度由最大值指定的字符序列 字段宽度(默认为1);下一个指针必须是指向char的指针,并且 所有角色必须有足够的空间(没有终止空值 字节被添加)。 通常跳过前导空格被抑制。至 首先跳过空格,使用格式的显式空格。
因此,请将格式更改为" %c"
。
答案 1 :(得分:1)
这个
char s[10],c;
scanf("%s",s);
scanf("%c",&c);
printf("%s\n",s);
printf("%c",c);
无法按预期工作,因为当您使用scanf("%s",s);
时,您将从键盘输入一个字符串,然后按Enter键。 scanf("%s",s);
将字符串存储在缓冲区的s
中,但会让缓冲区中的enter
或更精确\n
。下一个scanf("%c",&c);
会读取\n
,因为它的长度为1个字符,并将其存储在c
中。但是当你打印它时你什么也看不见,因为它只是一个新的线。为防止所有此更改,第二个scanf("%c",&c);
scanf(" %c",&c);
为\n
留出空间。
希望这可以帮助您了解正在发生的事情。
答案 2 :(得分:0)
输入字符串's'的字符后输入'\ n',下一次字符扫描会捕获新行并打印出来。你能做的就是捕获新行'\ n'。放上scanf(“%c”,& c); 再一次它会起作用。
char s[10],c;
`scanf("%s",s);`
`scanf("%c",&c);`
`scanf("%c",&c)`
`printf("%s\n",s);`
`printf("%c",c);`