关于#c语言#的问题:在main中输入数据时,要求做合法性检查,若输入的字符串不能构成十六进制数

键盘输入一串字符,看作十六进制数,先将其转换为十进制整数输出 ,再转换为八进制形式输出。在main中输入数据时,要求做合法性检查,若输入的字符串不能构成十六进制数,重新输入

就差是否由数字和A-F组成,然后进行进制转换

#include <stdio.h>
int main()
{
      char s[100];
      int e[100];
      int n=0,i,k=0;
      long long data = 0;
      char ch = getchar();
      while(ch != '\n')
      {
            if((ch >='0' && ch<='9') || (ch>='A' && ch<='F') || (ch>='a' && ch<='f'))
                s[n++] = ch;
            else
                printf("字符不是十六进制字符");
            ch = getchar();
      }
      for(i=0;i<n;i++)
      {
          if(s[i]>='0' && s[i]<='9')
              data = data*16  + s[i] - '0';
          else if(s[i] >='A' && s[i] <='F')
              data = data * 16 + s[i] - 'A'+10;
          else if(s[i] >= 'a' && s[i] <= 'f')
              data = data * 16 + s[i] - 'a'+10;
      }
      printf("十进制为:%d\n",data);
      while(data > 0)
      {
          e[k++] = data%8;
          data = data/8;
      }
      printf("八进制为:");
      for(i=k-1;i>=0;i--)
          printf("%d",e[i]);
      return 0;
}