这里使用一个简单的账号密码输入并打印的程序来分析。输入 #include<stdio.h>intmain(){ char account[20] = {0 }int password[20] = {0 }printf("请输入账号:")
因为你不清空数组,input超过密码长度的值还保留在数组里面。给你详细举例,当你输入超过密码长度hehe1234,你的input里面的数据就是{h,e,h,e,1,2,3,4...}这时候你再输入正确密码hehe123,前面的都被覆盖,但是4还保留在数组里面,你的input其实还是hehe1234,所以你不可能再得到正确密码。
1 以字符串方式,读入用户名和密码;2 通过strcmp函数,判断是否相同。如相同,则合法。
3 给出提示信息。
说明:strcmp原型为
int strcmp(char *a, char *b)
功能为比较a和b两个字符串,如果相同返回0;如果a大返回1;如果b大返回-1。
大小依照ascii比较。
参考代码如下:
#include <stdio.h>#include <string.h>int main(){char a[100],b[100] scanf("%s%s",a,b) if(strcmp(a,"abc") == 0 &&strcmp(b, "123456") == 0) printf("用户合法\n") else printf("用户非法\n")}