getchar函数问题,50分恭送

来源:百度知道 编辑:UC知道 时间:2024/05/23 01:20:28
有一道编程题如下:
#include<stdio.h>
#define MAX 1000
main()
{int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf(“\nPlease input a hexadecimal number:”);
while((c=getchar())!=’\0’&&i<MAX&&flag1)
{if(c>=’0’&&c<=’9’||c>=’a’&&c<=’f’|||c>=’A’&&c<=’F’)
{flag=1;
t[i++]=c;
}
else if(flag)
{t[i]=”\0”;
printf(“\n decimal number :%d\n”,htoi(t));
printf(“continue? (Y/N)”);
c=getchar();
if(c==’N’||c==’n’)flag1=0;
else
{flag=0;
i=0;
printf(“\nPlease input a hexadecimal number:”);
}
}
}
}
htoi(s)
char s[];
{int i,n;
n=0;
for(i=0;s[i]!=’\0’;i++)
{if(s[i]>=’0’&&s[i]<=’9’)n=n*16+s[i]-‘0’;
if(s[i]>

你的理解是对的。

输入回车的时候,c是不是得到字符是ASCII的13,不满足
if(c>=’0’&&c<=’9’||c>=’a’&&c<=’f’|||c>=’A’&&c<=’F’)
的条件,所以判断后再已有的两个字符后加了个“\0”表示字符串结束。

用gets函数接收字符串处理回车的话,也是用getchar得到的C做比较,比较的对象可以是"\n",或者是数字的13(#0D),