gpt4 book ai didi

C scanf 第二次跳过

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:31 26 4
gpt4 key购买 nike

我读过有关在 scanf 前面放置空格的信息,但我尝试的所有方法都不起作用。我正在尝试读入两组三个整数。第一个 scanf 工作正常,而第二个没有。我很沮丧,因为我尝试了在论坛中看到的所有在前面放置空格或换行符的方法,但没有任何效果。

有问题的代码:

// Get user input for the two dates:
printf("Enter Date #1 in format mm:dd:yyyy \n");
scanf("%i:%i:%i\n", &D1.month, &D1.day, &D1.year);

printf("Enter Date #2 in format mm:dd:yyyy\n");
scanf("%i:%i:%i", &D2.month, &D2.day, &D2.year);

我试着把一个空格和一个换行符分开放在一起,我试着读入一个虚拟变量字符,看看是否行得通。为什么第二次scanf不能输入任何数据??

显示输出:

Enter Date #1 in format mm:dd:yyyy 
09:06:1995
Enter Date #2 in format mm:dd:yyyy
The number of days between 0:1529117256:94769206 and 9:6:1995 is -1783102426

我发了一个新帖子,因为我看到的解释是字符而不是整数。

最佳答案

当您使用 %i 时与 scanf :

scanf("%i",&inp);  //INPUT 09 AS MONTH OR ANYTHING

由于前缀 0,它会将输入读取为八进制或当输入为 09 时前导零,因此值为 inp9 起无效不是有效的八进制数字,八进制数字为 0,1,2,3,4,5,6,7 .

如果%d正在使用09输入不会被转换为八进制,读取的值将是9 .

除此之外,我还想提出一些建议:away-from-scanf

关于C scanf 第二次跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52582254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com