#include
main()
{
FILE *p;
char buf_login[10];
char buf_stream[10];
puts("Login:");
scanf("%s",buf_login);
printf("Your login is:%s
", buf_login);
p=fopen("12.txt","rt");
fgets(buf_stream, 10, p);
fclose(p);
if (strcmp(buf_stream,buf_login)==0)
{
puts("OK");
}
else {
puts("error!");
}
}
Не получается пройти "аутентификацию". В файле 12.txt, к примеру, находится abcd. Компилирую, ввожу abcd и все равно выкидывает error! вместо ОК. Не могу понять, где ошибка. Вроде код правильный. Кодировка 12.тхт файла ASCII. Пишу в Borland 2.0, на виртуалке на Ubuntu.
Ответ
Ошибки могут быть две...
Если файл открывается для чтения, то в нем на самом деле не строка "abcd", а строка "abcd
"(с переводом строки). Убрать можно открыв сам файл в режиме редактирования и при помощи клавиш перемещения курсора и удаления убрать из файла последний непечатный символ (после символа "d"). У Вас должна получиться одна строка без перевода каретки.
Файл не открывается, так как не находится в той же директории, откуда и запускается программа. Подтверждением открытия файла должен служить валидный указатель p. В своем коде Вы его не проверяете, но посмотрите хотя бы в отладчике. Хотя скорее всего, в случае отсутствия файла, программа вывалится с ошибкой.
Сам же код в принципе рабочий.
Комментариев нет:
Отправить комментарий