C语言中交叉输入数值数据和字符数据的规则是什么呢?

例如:

int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);

为什么上述程序必须用 10A  20B<CR>来输入数据?(两个空格)

还有还有~

char c1,c2;
float a1,a2;
scanf("%f%f",&a1,&a2);
scanf("%c%c",&c1,&c2);

为什么要用7.29<CR>

               101.298AB<CR>

或 7.29  101.298AB<CR>    (两个空格)

不懂其中的规则/(ㄒoㄒ)/~~ 求大神指点?

Rebellious_2016
浏览 1537回答 1
1回答

望远

%c输入的时候会读取单个字符,所以scanf("%d%c%d%c",&a1,&c1,&a2,&c2);在输入数据的时候前面数字和字符之间不能用空格分隔,如12 a 34 b那么12和a之间的空格就会被c1接收,导致后面的数据输入错误解决方法:显式的给出数据输入时的分隔符。scanf("%d %c %d %c",&a1,&c1,&a2,&c2);而相同数据连续输入可以以空格,tab,换行作为默认的分隔符(%c输入字符除外)
打开App,查看更多内容
随时随地看视频慕课网APP