回 帖 发 新 帖 刷新版面

主题:请教一个输入的问题

我写了个文件
#include <stdio.h>
#include "engineer.h"
int fanhui()
{
    int i=0,j,k,a;
    char b[100];
    for(;;)
    {
        j=0;
        do
        {
            printf("请输入工程师编号(1-2000):\n");
            if(1!=scanf("%d",&a)||a>2000 ||a<1||strlen(b)>0)        
            {        
                fflush(stdin);
                printf("输入不符合要求,请重新输入:\n");
                printf("\n");
                continue;
            }
            fflush(stdin);
            break;
        }while(1);
        for(i=0;i<10;i++)
        {
            while(personl[i].no==a)
            {
                j=1;
                printf("该编号已存在,请重新输入\n");
                printf("\n");
                break;
            }        
        }
        if(j==0)
        {            
            fflush(stdin);
            return a;
        }
    }
}
我定义了一个变量int a;来输入编号的,现在的问题是如果scanf("%d",&a)输入的是1a,程序自动认为输入的1。但要求是如果输入数字以外的其他任何字符都应该提示输入错误,该怎么写,谢谢了!!!

回复列表 (共7个回复)

沙发


用ASC码来表示数字

板凳

我大致知道的想法,你的工程师编号并不一定要是整型,因为它并不需要作为数值,也不需要参与运算,它仅仅是作为一个员工编号,所以你可以把它定义为string类型,然后判断string里面是否只包含数字就显得轻松多了,只要自己写一个函数即可,如下:

bool check(string str)
{
   for(int i=0;i<str.length();i++)
    {
    if(str.at(i)<48 || str.at(i)>57)//依次判字符串里的字符0-9分别对应整数的48-57
     return false;                  //因为0-9的ASCII码为16进制的30H-39H
    }                                   //转换为10进制整数就是48-57
    return true;
}

3 楼

_.-.
       ,'/ //\
      /// // /)
     /// // //|
    /// // ///
   /// // ///
  (`: // ///
   `;`: ///
   / /:`:/
  / /  `'
 / /
(_/

4 楼

我潜水好几年了,一般都是轻轻的来静静的去,今天也忍不住说一

5 楼

看的激动。。。 谢谢楼主了

6 楼

好文笔,希望别进宫了

7 楼

本来在潜水,看到LZ这篇矿石奇文,

我来回复

您尚未登录,请登录后再回复。点此登录或注册