IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

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

 
 Ответить  Открыть новую тему 
> простенькая прога на запрос пароля, язык C, компилятор Turbo C++
сообщение
Сообщение #1


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


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

#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;
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, во-первых, все-таки открывать файл лучше вот так:
  pass = fopen("password.txt","rt");
(второй параметр задает режим - у меня записано открытие текст. файла для чтения), а во-вторых, если после пароля в файле есть перевод строки, то в s запишется "пароль\n", что естественно не будет равно паролю, введенному с клавиатуры... Поэтому перевод строки из файла надо убрать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


Цитата
если после пароля в файле есть перевод строки, то в 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Файл с паролем прикрепи сюда (именно ПРИКРЕПИ, а не скопируй)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


Я конечно прикреплю файл, но дело в том .что я тут же в программе вывожу значения 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.TXT ( 8 байт ) Кол-во скачиваний: 162
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Если не ошибаюсь у тебя пробел после password... smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


Цитата
Если не ошибаюсь у тебя пробел после password... smile.gif


да нет же! тем более этот же текстовый файл я использую и проге на Паскале, там все идеально проходит.

Добавлено через 3 мин.
и вот еще доказательство того, что там нет пробела: когда прога выводит
printf(s); 
, то выводится "password" без всяких пробелов. вот. не знаю, в чем дело. =(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ну, и кто тебя учил СТРОКИ сравнивать через "==" ? blink.gif

if (strcmp(s, p) == 0)
return(1);
else
return 0;

и все работает...

(это, кстати, во-вторых... А во-первых, я понял, что ты НЕ читаешь того, что я пишу... Зачем же я пишу? Я что, где-то говорил, что надо открывать файл как
pass = fopen("password.txt","r");
? Не было этого, читай внимательнее...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


теперь я вообще в ауте.. почему когда я с самого начала использовала функцию
Цитата
strcmp(s, p)
ничего не работало?? wacko.gif из-за rt? возможно..хм..
спасибо, volvo..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.11.2020 23:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name