C语言中怎么输入带标点符号的一句话

2025-03-09 12:38:41
推荐回答(1个)
回答1:

在scanf的%c前面加个空格就好了

改成这样就解决了scanf(" %c",&c);

具体错误解释是这样的:

因为回车键的ASC2字符是'\r' ,也就是0x0d,他相当于一个char型字符。

在scanf接收数据的时候,你输入的是:y(打个比方,一个字符),然后按下回车键

此时相当于你在键盘中输入的是俩个字符,'y’和'\r',这时如果你用%c接收,%c你应该很了解,是接收单个字符的,所以他会第一次接收'y’,第二次接收'\r',这也就是为什么连续输入字符%c前必须加上空格的道理,目的是防止前一个字符'\r'被下一个scanf误当做字符接收了。

当然,你如果用%s接收,他只会接收回车之前的字符串,%s特性,通过回车判断字符串输入结束。
如果用%d接收,他只识别数字,%f同样的道理。

举个例子你写个scanf("%s", &ch);scanf("%d", &ch);scanf("%f", &ch);然后什么数据都不输入,只按回车键,他是不会执行的,scanf下面的语句不会执行。就是我上面说的原因。

但是'\r'是一个字符,他当然会被%c接收,所以会造成误判。

这么解释总该明白吧。