【发布时间】:2017-03-04 08:28:24
【问题描述】:
我试图提示用户输入一个数字,然后提取他们输入的数字并将他们输入的数字的数字相加。他们只能输入一次号码。我的代码如下:
printf("\nPART 2: EXPRESSIONS SUM\n\n");
printf("Enter 5-digit integer: ");
scanf("\n%1d%1d%1d%1d%1d", &dig_one, &dig_two, &dig_three, &dig_four, &dig_five);
scanf("\n%d", &five_dig_int)
但是,在第一个 scanf 完成后,程序会挂在第二个 scanf 上,等待更多输入。有没有办法“重新扫描”,可以说是初始输入,这样用户就不必再次输入数字?谢谢! ;
【问题讨论】:
-
-
有趣,我会试试看。所以看起来没有办法只使用 scanf 正确吗?因为一旦使用它,输入就被“吃光”了。
-
或者,我可以保留获取数字的 scanf,然后将它们连接成一个字符串并将其转换为完整的 5 位整数吗?如果我想走那条路,我该怎么做?
-
scanf(" %c%c%c%c%c", &str[0], &str[1], &str[2], &str[3], &str[4]) -
@Froobyflake 是的,输入一旦被扫描,就会被“吃掉”,这使得
scanf和fscanf非常非常难以用于任何复杂、灵活、或容错解析。这就是为什么我总是建议将整行读入缓冲区(使用fscanf或等效项),然后尽一切可能解析行。这样你就可以对缓冲区做任何你想做的事情:你可以备份并尝试用几种不同的方式解析它,等等。
标签: c