0

我最近开始学习 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;
        }
    }


}
4

4 回答 4

3

读取字符串时,%s不用%c作格式说明符。%c只读取一个字符。

于 2013-01-03T14:31:58.033 回答
2

您的格式说明符错误。

这也是错误的:

if (password == password1)

这只会比较转换为指针的数组。您需要通过调用逐个字符比较strcmp()

if( strcmp(password, password1) == 0 )
{
  printf("match!\n");
}
于 2013-01-03T14:34:09.630 回答
0

使用"%s"而不是"%c"

%c仅适用于 1 个字符

%s用于字符串

scanf("%s", password);
scanf("%s", password1);
于 2013-01-03T14:33:16.160 回答
0

你需要做

scanf("%s", password);

and to compare use :

strncmp(password,password1,MAX_LENGTH)

it´s always more safe :)...

于 2013-01-03T14:42:10.273 回答