对于空格和回车对于输入函数的影响,这里只谈对scanf函数的影响
情况一: scanf("%d%c“,&a,&b);
空格会结束scanf函数当前格式数据的录入,并且空格将会被存入缓存区。如果后面仍有%c格式的录入,空格将会被%c读取;
改变这种错误出现的方法是在上面%c %d中间加一个空格,吸收掉缓存区的空格;
情况二:
scanf("%s%c",str,&ch);
空格会结束scanf函数当前格式数据的录入,并且字符串数组末尾将会自动添加结束符‘、0’,但是空格仍会被寸入缓存区内,空格将会被%c读取;
(空格不会变为字符串结束符,仍会被存入缓存区内);需注意,当只输入例如5然后回车时,scanf函数将会结束运行,其实此时回车包含两种字符,一种是/t(换行)和/n(回车),scanf将会自动读入换行,然后在‘/n’的作用下结束scanf的运行;只要是进行回车操作,都是回车符里的‘/t’存入缓存区(传送到相应地址),‘/0’只起到结束程序的功能;
注意;空的字符串数组直接敲击回车,%s不会读入回车,只会在输入一系列数据以后,敲击回车使scanf函数结束运行(将缓存区的数据提取出到相应地址中,scanf函数结束运行,使程序继而执行后继程序);