断点调试实例:
#include <stdio.h>
int main(void)
{
int sum = 0, i = 0;
char input[5];
while (1){
scanf("%s",input);
for(i = 0;input[i] != '\0'; i++)
sum = sum*10 + input[i] - '0';
printf("input=%d\n", sum);
}
return 0;
}
这个程序的作用是:首先从键盘读入一串数字存到字符数组input中,然后转换成整型存到sum中,然后打印出来,一直这样循环下去。scanf("%s", input);这个调用的功能是等待用户输入一个字符串并回车,scanf把其中第一段非空白(非空格、Tab、换行)的字符串保存到input数组中,并自动在末尾添加'\0'。接下来的循环从左到右扫描字符串并把每个数字累加到结果中,例如输入是"2345",则循环累加的过程是(((0*10+2)*10+3)*10+4)*10+5=2345。注意字符型的'2'要减去'0'的ASCII码才能转换成整数值2。下面编译运行程序看看有什么问题:
[zhangsan@localhost study-c]$ gcc -Wall -g gdb2.c -o gdb2
[zhangsan@localhost study-c]$ ./gdb2
123
input=123
345
input=123345
<