C структурировать чтение / запись значения мусора в файл - PullRequest
1 голос
/ 16 ноября 2011

Я погружаюсь в C после долгого времени и борюсь с чтением и записью структуры в простой текстовый файл. Я отладил эту прогу и обнаружил, что она читает и записывает значение мусора в файл. Кто-нибудь может мне помочь. Вот мой код

#define MAX_UserName_LEN 16
#define MAX_Password_LEN 8
#define MAX_FileName_LEN 32

struct userDetails
{
char userName[MAX_UserName_LEN];
char password[MAX_Password_LEN];
};

int registration(struct userDetails userInfo)
{
FILE *userDb;
userDb= fopen("UserDataBase.txt","a");
if(fwrite(&userInfo,sizeof(userInfo),1,userDb))
{
    fclose(userDb);
    return 1;
}
else
{
    return 0;
}

}

int authenicate(struct userDetails userInfo)
{
FILE *userDb;
struct userDetails temp;
userDb = fopen("UserDataBase.txt","r");
while(!feof(userDb))
{
  fread(&temp,sizeof(temp),1,userDb);
  if (temp.userName==userInfo.userName && temp.password==userInfo.password)
  {
    printf("Logged In Sucessfully");
    return 1;
  }
 }
 return 0;

}

В основной функции я просто объявляю одну структурную переменную и принимаю пользовательский ввод в эту структуру и передаю ее обеим вышеупомянутым функциям.

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Первая серьезная проблема, которую я вижу здесь:

if (temp.userName==userInfo.userName && temp.password==userInfo.password)

Вы пытаетесь сравнить строки с ==.Вам нужно использовать strcmp() вместо:

if (strcmp(temp.userName, userInfo.userName) == 0 && 
    strcmp(temp.password, userInfo.password) == 0)

Я не уверен, что это как-то связано с "мусором", который вы получаете, но это определенно ошибка.

Поскольку ваш код стоит прямо сейчас, он никогда не введет оператор if.

0 голосов
/ 16 ноября 2011

Напишите короткий код, который печатает список пользователей, чтобы вы увидели, содержит ли файл мусор или нет.

В любом случае пароли должны быть каким-то образом зашифрованы.Даже тупое решение лучше, чем ничего, просто сделать его нечитаемым для человеческого глаза.Скажем, для (n = 0; n .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...