C语言scanf函数的空格问题
在进行C语言代码变量时,发现使用scanf函数的时候,如果输入的字符串终究带有空格,那么空格之后的字符串,scanf函数就读取不到了。
举例
如上图所示,使用scanf函数接收hello world字符串,实际输出的字符串只有hello,后面的world没有了。
通过查阅资料,这个是scanf函数的固有问题,使用gets函数即可。
问题原因:
因为我们再输入hello world时,键盘输入的数据会存入缓存区,这个时候scanf会从缓存区里面读取数据,由于scanf读取数据在碰到空格,换行、制表符就会停止读取,所以导致了这种现象。
解决方案
scanf("%[^\n]",&str1);//使用%[^\n]作为输入就可以避免这个问题。
或者使用gets函数