You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

员工管理系统中员工ID纯数字校验及重复输入实现咨询

解决方案

要实现员工ID的数字校验并在不通过时重新输入,你需要调整校验函数的返回值,并在输入函数中加入循环逻辑,具体修改如下:

1. 优化校验函数checkValidId

将原void类型改为返回int,用1表示ID有效(全数字),0表示无效。同时优化校验逻辑,遇到非数字字符直接返回,无需遍历整个字符串:

int checkValidId(char *id)
{
    for(int i = 0; id[i] != '\0'; i++)
    {
        // 检查当前字符是否不是数字
        if(!(id[i] >= '0' && id[i] <= '9'))
        {
            return 0; // 无效ID,返回0
        }
    }
    // 所有字符都是数字,返回1
    return 1;
}

2. 修改input函数添加循环逻辑

使用do-while循环,反复获取员工ID直到校验通过:

struct employee input()
{
    struct employee e;

    do
    {
        printf("Enter Employee ID: ");
        // 注意:e.empId本身就是数组名,不需要取地址&
        scanf("%s", e.empId); 
        
        // 校验不通过时提示用户
        if(!checkValidId(e.empId))
        {
            printf("Invalid Employee ID! Please enter only digits.\n");
        }
    } while(!checkValidId(e.empId)); // 校验不通过则循环

    // 后续输入逻辑...
    return e;
}

额外注意事项

  • 原代码中scanf("%s", &e.empId);存在错误:e.empId是字符数组名,本身就是指向数组首元素的指针,不需要加&,去掉后才是正确写法。
  • 如果员工ID长度有要求(比如最多9位,因为empId[10]最后一位要存结束符\0),可以在校验函数中加入长度检查,比如:
    if(strlen(id) > 9)
    {
        printf("Employee ID cannot exceed 9 digits!\n");
        return 0;
    }
    

内容的提问来源于stack exchange,提问作者DHEERAJ SWAROOP S M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:35:16