您的位置:首页 > 其它

学习笔记之vi之用vimgdb调试scanf

2012-12-31 13:24 423 查看
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j=0,k=0;
int sum=0;
char ch;
printf("请输入一串整数和任意数目的空格:");

while(scanf("%d",&i)==1)
{
sum +=i;
while((ch=getchar())==' ') //屏蔽空格
;
if(ch == '\n')
{
break;
}
ungetc(ch,stdin);
}
printf("结果是:%d",sum);
printf("\n");
return 0;

}


建立一个文本(比如data1),在data1里输入scanf 需要的数据,以空格分隔。保存。

在vimgdb里空格调出gdb 窗口,输入r un < data1就可以了。暂记:输入两段不同的数据还不可行。

//后记:又修改了代码,将两行数据文件data1中,发现出现预期的调试效果。data1文件:1 2 3 4 5

6 7 8 9 10这样每一行的结尾就是一个‘/n’,与原代码的原意相符合。

代码例程参考:www.fishc.com C++代码对比

#include <iostream>
using namespace std;
int main()
{
int sum = 0;
cout << "请输入一串整数和任意数目的空格:";
int i; //可任意处定义变量
while(cin >> i) //输入流向变量i,由变量i保存
//如果输入为一个小数点,视为非法值,返回false。要不,就将int型改成float型
{
sum += i;
while(cin.peek() == ' ')//cin作为一个对象,而peek()便为它的一个对象
{
cin.get();
}
if(cin.peek()=='\n')
{
break;
}
}
cin.ignore(100,'\n');  /*作用相当于忽略了键盘缓冲区的Enter键。*/   cout<< "结果是:"<< sum << endl;
cin.get();

return 0;
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: