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

C语言简易登录程序strcmp验证异常求助

修复C语言登录程序中strcmp()验证失败的问题

嘿,我刚看完你的问题——明明输入了正确的学号和密码,strcmp()却总是判定为错误,这种情况我之前也碰到过,大概率是输入处理的细节没做好。我帮你梳理下常见的坑,再给你一份修正后的代码。

首先先说说可能导致问题的几个关键点:

  • 字符串缺少结束符'\0':如果用getch()这类函数输入密码,你得手动给输入的字符串加上结束符,不然strcmp()会一直读到内存里的垃圾值,自然对比不对。
  • 输入缓冲区残留的换行符:比如先用scanf()读学号,回车的换行符会留在缓冲区里,要是后续读密码时没处理,可能会被当成密码的一部分。
  • 数组长度不够:如果预设的学号/密码或者输入的内容超过了你定义的数组长度,会导致缓冲区溢出,破坏字符串结构。

结合你提到的代码片段(里面有conio.h,应该是用了getch()隐藏密码输入),我写了一份修正后的完整代码:

#include<stdio.h>
#include<string.h>
// 注意:conio.h是非标准库,仅部分编译器(如Dev-C++、Turbo C)支持,若用GCC可能需要替换输入方式

int main() {
    // 预设正确的学号和密码
    char correctStudentID[] = "Claran123";
    char correctPassword[] = "MySecurePwd123";
    
    // 定义足够大的数组存储输入内容,避免溢出
    char inputID[50];
    char inputPwd[50];
    
    printf("Enter Student ID: ");
    // 限制输入长度为49,留一个位置给结束符
    scanf("%49s", inputID);
    // 清空输入缓冲区的残留换行符,避免干扰后续密码输入
    while(getchar() != '\n');
    
    printf("Enter Password: ");
    int idx = 0;
    char ch;
    // 用getch()实现密码隐藏输入
    while((ch = getch()) != '\r') { // Windows下回车是\r,Linux/macOS是\n,按需调整
        // 处理退格键,优化输入体验
        if(ch == '\b' && idx > 0) {
            printf("\b \b"); // 清除屏幕上的星号
            idx--;
            continue;
        }
        inputPwd[idx++] = ch;
        printf("*"); // 用星号代替明文显示
    }
    inputPwd[idx] = '\0'; // 关键!手动添加字符串结束符,否则strcmp无法正常工作
    printf("\n");
    
    // 验证学号和密码
    if(strcmp(inputID, correctStudentID) == 0 && strcmp(inputPwd, correctPassword) == 0) {
        printf("Login Successful!\n");
    } else {
        printf("Wrong Password or Student ID\n");
    }
    
    return 0;
}

重点修正的几个地方:

  1. 手动添加'\0':用getch()输入密码时,系统不会自动添加字符串结束符,必须手动在输入完成后补上,这是strcmp()能正确对比的前提。
  2. 清空输入缓冲区:读完学号后用while(getchar() != '\n')把缓冲区里的换行符全部清掉,防止后续读取密码时把换行符当成输入内容。
  3. 限制输入长度:scanf("%49s", inputID)确保输入的学号不会超过数组容量,避免缓冲区溢出导致的奇怪问题。
  4. 退格键处理:增加了退格键的逻辑,让用户输入密码时可以删除错误字符,更符合实际使用场景。

另外还要注意,strcmp()是区分大小写的,如果你的预设账号密码是大写,输入小写也会判定错误,这点也要留意哦。

内容的提问来源于stack exchange,提问作者Lawrence McClarence

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:11