[英]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.