下面是一些应该接受来自控制台的整数输入的简单代码。在给出无效(非整数)输入之前,它工作正常。
1 #include <stdio.h>
2
3 int main()
4 {
5 int x = 0;
6 int inp = 0;
7 int nums[20];
8 int idx = 0;
9 for(;;){
10 printf("Enter an integer: ");
11 inp=scanf("%d", &x);
12 if(inp == 0){
13 printf("Error: not an integer\n");
14 }
15 else{
16 if(idx<20){
17 nums[idx] = x;
18 idx++;
19 }
20 }
21 }
22 return 0;
23 }
这是 gdb 的输出,显示我在输入值“g”后逐步执行程序。看看它是如何跳到第 18 行的,然后无法从用户那里寻找进一步的输入。
Starting program: /Users/jeffersonhudson/xxxx/hw1
Enter an integer: g
Breakpoint 1, main () at hw1.c:12
12 if(inp == 0){
(gdb) n
13 printf("Error: not an integer\n");
(gdb) n
Error: not an integer
0x0000000100000ee4 18 idx++;
(gdb) n
10 printf("Enter an integer: ");
(gdb) n
11 inp=scanf("%d", &x);
(gdb) n
Breakpoint 1, main () at hw1.c:12
12 if(inp == 0){
(gdb)
这是程序输入错误后的输出:
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
Enter an integer: Error: not an integer
^C
有人可以帮我弄清楚我在这里做错了什么吗?