我最近开始学习C并且正在尝试编写密码数据保护程序。我正在编写一个函数,应该测试一个文件,如果不存在,则会存在password.txt,它会得到一个空值,然后让用户设置一个主密码并重复。但是,它不允许用户重复密码。有小费吗? - 干杯(记住C而不是C ++)
/*Headers*/
#include <stdio.h>
#include <stdlib.h>
#define MAX_LENGTH 99
int main(void){
/*Variable Declaration*/
char password[] = "Lakaka";
masterPassword();
printf("Welcome to Fort-Knox.");
getchar();
return 0;
}
int masterPassword(void){
/*Password Comparison Variables*/
char password[MAX_LENGTH];
char password1[MAX_LENGTH];
FILE*fp;
if (fp == NULL){
printf("Choose a master password:\n");
scanf("%c", password);
printf("Please repeat password:\n");
scanf("%c", password1);
if (password == password1){
printf("Password Accepted.");
fp = fopen("password.txt", "w+");
printf("File Created");
fclose(fp);
return 0;
}
}
}
答案 0 :(得分:3)
在读取字符串时,使用%s
而非%c
作为格式说明符。 %c
只能读取一个字符。
答案 1 :(得分:2)
您的格式说明符错误。
这也是错误的:
if (password == password1)
这只会比较转换为指针的数组。您需要通过调用strcmp()
来比较逐个字符:
if( strcmp(password, password1) == 0 )
{
printf("match!\n");
}
答案 2 :(得分:0)
使用"%s"
代替"%c"
%c
仅适用于1个字符
%s
用于字符串
scanf("%s", password);
scanf("%s", password1);
答案 3 :(得分:0)
你需要做
scanf("%s", password);
并比较使用:
strncmp(password,password1,MAX_LENGTH)
总是更安全:)...