繁体   English   中英

如何限制输入的字符数

[英]How to limit the amount of characters entered

因此,我正在研究一个简单的密码程序。 到目前为止,我已经有了此代码

/* 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);

还有一个您没有考虑的问题: fgets将换行符'\\n'视为有效字符,因此它也在usrIn ,您需要在比较密码之前手动将其删除。

如果不提供usrIn的大小,则不提供动态大小并执行动态输入,会将完整密码插入数组usrIn中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM