按HR、Developer等职位筛选员工无输出,求代码排查帮助
C++员工职位筛选代码无输出问题排查
以下是导致代码无输出的核心原因及修复方案:
1. C风格字符串比较错误
这是最可能的问题:C++中不能直接用==比较char[]类型的字符串,emp[i].designation == department实际是比较两个字符串的内存地址,而非内容是否一致。
修复方式:使用C标准库的strcmp函数(需包含<cstring>头文件),判断返回值是否为0(表示字符串相等):
#include <cstring> // ... if (strcmp(emp[i].designation, department) == 0)
2. num变量值异常
如果num(员工总数)的值为0或负数,循环for (int i = 0; i <= num - 1; i++)根本不会执行,直接进入无记录分支。若连"No records Found"都看不到,需检查:
num是否正确初始化或赋值(比如添加员工后是否更新了num)system("cls")清屏后,后续输出是否被光标定位到了不可见区域
3. gotoXY光标定位问题
gotoXY(0,7)这类函数会把输出光标定位到屏幕第7行,如果控制台窗口高度不足,这部分内容会被隐藏,导致看起来没有输出。
临时验证方案:注释掉所有gotoXY相关代码,直接用普通cout输出,看是否能显示内容。
4. 输入处理缺陷
cin >> department会在空格处截断输入,如果职位名称包含空格(比如"Senior Developer"),department只会存储前半部分,导致匹配失败。
修复方式:改用getline读取完整输入,注意先清除之前的换行符:
cin.ignore(); // 清除cin >>留下的换行符 cin.getline(department, sizeof(department));
5. emp数组未正确初始化
如果emp数组中的designation字段未被正确赋值(比如是空字符串、乱码),自然无法匹配输入的职位,导致无输出。需检查员工数据的初始化逻辑是否正确。
内容的提问来源于stack exchange,提问作者Maheswar reddy
相关产品推荐
相关产品推荐

