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

我只定义了一个char,下面scanf中我输入了带空格的一段话,只显示了第一个单词,我想请教一下为了能在scanf中输入一段带空格和标点的话应该怎样定义和怎样写语句,谢过!!

第1个回答  推荐于2017-09-09
在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接收,所以会造成误判。

这么解释总该明白吧。追问

#include
int main(void)
{
char sentence[50];
scanf(" %s",&sentence);
printf("%s",sentence);
return 0;
}
我这里才学C不就...有点生硬,这里我加了个空格,但是输出结果好像还是不对..

本回答被提问者和网友采纳
相似回答