这个程序是怎么输入和输入判断的?

fxxc12 2010-08-19 10:21:31
#include<stdio.h>
#include<stdlib.h>
#define BUFFERSIZE 1024 /*允许处理的最长行有1024个字符*/
int main()
{
int a,b,sum; /*将输入的两个数分别存储在变量a和b中,sum=a+b*/
char buffer[BUFFERSIZE];
printf("***********************************\n");
printf("* Welcome to use our counter *\n");
printf("* Input two integers in one line *\n");
printf("* The sum will be printed *\n");
printf("* Input the char '#' to quit *\n");
printf("***********************************\n");
/*从标准输入(stdin)读取输入的数据,存储在buffer中.
如果读取的第一个字符是'#'则推出程序*/
while((fgets(buffer,BUFFERSIZE,stdin)!=NULL)&&(buffer[0]!='#'))
{
if(sscanf(buffer,"%d %d",&a,&b)!=2) /*处理存储在buffer中的一行数据*/
{
printf("The input is skipped:%s",buffer);/*如果输入的数字不是两个则报错*/
continue; /*继续读取下一组数据*/
}
sum=a+b; /*计算a与b的和*/
printf("The sum of %d and %d is %d\n",a,b,sum); /*输出计算结果*/
}
return 0;
}

这段代码是在哪输入的?
又是怎么判断的?
...全文
71 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxxc12 2010-08-19
  • 打赏
  • 举报
回复
谢谢几位大侠的回复。终于把这个程序看明白了。
svtanto 2010-08-19
  • 打赏
  • 举报
回复
fgets(..., stdin) != NULL
从标准输入读入,一般就是键盘,如果fgets有错误发生(fgets就返回NULL),终止循环
buffer[0]!='#'
如果读取的输入的第一个字符是#,就终止循环
sscanf(buffer,"%d %d",&a,&b)!=2
sscanf从buffer中按照格式字符串"%d %d"读取2个数字,保存到a和b,如果buffer的格式不符合"%d %d",
返回值就不是2
canican 2010-08-19
  • 打赏
  • 举报
回复
fgets从stdin设备读入字符串到buffer
sscanf再从buffer读取变量;
buffer[0]!='#'判断第一个字符是不是‘#’,如果不是停留在while语句
“continue;”语句也跳转到while语句
Jim_King_2000 2010-08-19
  • 打赏
  • 举报
回复
fgets(..., stdin);

fgets是用来输入的。它比gets要好,能防止缓冲区溢出。

sscanf负责把字符串中的数据读入到变量中。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧