gpt4 book ai didi

c - 如何限制输入的字符数

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:29 24 4
gpt4 key购买 nike

所以,我正在开发一个简单的密码程序。到目前为止我已经得到了这段代码

/* simple  password prog */
#include<stdio.h>
#include<string.h>
int main(){
char usrIn[9];
char password[]={"AXcd8002"};
do {

fprintf(stdout,"\n Password:");
fgets(usrIn,9, stdin);
if ( strcmp(usrIn,password)<0 || strcmp(usrIn,password )>0 ) {
fprintf(stdout,"\n Password incorrect"); };

}while( (strcmp(password,usrIn))!=0 );

fprintf(stdout, "\n The password is correct \n");
return 0;
}

此代码工作正常,如果密码不正确,循环将继续,如果密码正确 - 循环将中断。但不起作用的是:如果用户输入的密码至少长了一个字符,程序仍会说密码是正确的。例如,如果用户输入 AXcd8002AAA,fgets 将只读取 AXcd8002,而忽略 AAA。我怎样才能防止这种情况发生?

最佳答案

usrIn只有9个字符,当然多余的字符忽略不计。只需给 usrIn 足够的空间即可:

char usrIn[100];

作为最佳实践:

fgets(usrIn, sizeof(usrIn), stdin);

还有一个你没有考虑到的问题:换行符'\n'fgets认为是有效字符,所以它也在中usrIn,比对密码前需要手动删除。

关于c - 如何限制输入的字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com