Пароль хранится в текстовом документе, при вводе пароля пользователем прога сверяет его с тем ,что прописан в блокноте. Но странное дело, даже если вводишь правильный пароль, прога говорит, типа неверный пароль. Почему?
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
int Password();
void main()
{int k;
if (Password() == 1)
{
printf("You entered correct password!\n");
}
else
{
printf("False!");
}
getch();
}
int Password()
{
const n=10;
char s[n], p[n];
FILE *pass;
pass = fopen("password.txt","D:\TC\BIN\password.txt");
fgets(s,n,pass);
printf("Enter password:\n",n);
gets(p);
fclose(pass);
if (strcmp(s,p) == 0)
return(1);
else
return 0;
}
Ну, во-первых, все-таки открывать файл лучше вот так:
pass = fopen("password.txt","rt");(второй параметр задает режим - у меня записано открытие текст. файла для чтения), а во-вторых, если после пароля в файле есть перевод строки, то в s запишется "пароль\n", что естественно не будет равно паролю, введенному с клавиатуры... Поэтому перевод строки из файла надо убрать...
program password;
var
pass:string;
var real_pass:string;
function pass_(var s:string):string;
Begin
assign(input,'password.txt');
reset(input);
readln(s);
close(input);
end;
Begin
Writeln('Enter password please: ',pass);
readln(pass);
pass_(real_pass);
If pass=real_pass then
Writeln('You have entered right password') else
Writeln('Error: your password is wrong');
end.
Файл с паролем прикрепи сюда (именно ПРИКРЕПИ, а не скопируй)...
Я конечно прикреплю файл, но дело в том .что я тут же в программе вывожу значения p и s и они равны!! но прога пишет, что вы ввели неверный пароль!!!
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
int Password();
void main()
{ clrscr();
if (Password() == 1)
{
printf("You entered correct password!\n");
}
else
{
printf("Access denied!");
}
getch();
}
int Password()
{
const n=10;
char s[n], p[n];
FILE *pass;
pass = fopen("password.txt","r");
fgets(s,n,pass);
printf("Enter password: \n",n);
printf(s);
gets(p);
printf(p);
fclose(pass); /*здесь s = p*/
if (s==p)
return(1);
else
return 0; /*функция возвращает 0 но почему??*/
}
Если не ошибаюсь у тебя пробел после password...
printf(s);, то выводится "password" без всяких пробелов. вот. не знаю, в чем дело. =(
Ну, и кто тебя учил СТРОКИ сравнивать через "==" ?
if (strcmp(s, p) == 0)и все работает...
return(1);
else
return 0;
pass = fopen("password.txt","r");? Не было этого, читай внимательнее...)
теперь я вообще в ауте.. почему когда я с самого начала использовала функцию