Форум программистов, компьютерный форум CyberForum.ru

ошибка при роботе с файлом "expresion str! = NULL" - C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:23     ошибка при роботе с файлом "expresion str! = NULL" #1
не знаю почему, но выдает постоянно эту ошибку
вот нужная часть кода
C++
1
2
3
4
5
6
7
8
9
char pass[9];
    FILE *file;
        file=fopen("pas.txt","r+t");
        fgets(pass,8,file);
        fclose(file);
    if(strcmp(pass,str))
        return 0;
    else
        return 1;
файл был создан до компиляции ,с именем pas , и разширением .txt
в нем находился пароль из 8 символом и больше ничего
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 16:23     ошибка при роботе с файлом "expresion str! = NULL"
Посмотрите здесь:

C++ Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9"
C++ Что происходит при char *str = ""?
C++ В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
Возникает ошибка "0xC0000005: Нарушение прав доступа при чтении "0xfeeefee2"." C++
C++ Из-за чего может возникать следующая ошибка: "Invalid null pointer"?
Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка C++
При компиляции ошибка: C2228: left of ".real",".imag" must have struct/class/union C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.11.2011, 16:26     ошибка при роботе с файлом "expresion str! = NULL" #2
Цитата Сообщение от shaffle Посмотреть сообщение
char pass[9];
а если массив объявить так
C++
1
char pass[9] = { 0 };
а считывать вот так
C++
1
fgets(pass, 9, file);
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.11.2011, 16:27     ошибка при роботе с файлом "expresion str! = NULL" #3
shaffle, а str это что такое? И, кстати, всяческие fopen, fgets неплохо бы на ошибки проверять. Вместо strcmp лучше использовать strncmp.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:28  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #4
не помогло..

Добавлено через 52 секунды
str я передаю в функцию, он вводиться в мейне..
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.11.2011, 16:29     ошибка при роботе с файлом "expresion str! = NULL" #5
Цитата Сообщение от shaffle Посмотреть сообщение
str я передаю в функцию, он вводиться в мейне
Как вводится, как передается? Чтобы не тянуть резину, я сейчас намекаю на то, что неплохо бы выложить побольше кода.
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:29     ошибка при роботе с файлом "expresion str! = NULL" #6
shaffle, как вы str инициализировали?
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:34  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #7
проверил, при открытии file==0 , и закрыл файл
проверил так

C++
1
2
3
4
5
//........
if (file==0) 
exit(-1);
else
//......
Добавлено через 2 минуты
кода там многовато с лишними функциями, поэтому я кину только то, что касаеться этой пробелмы
вот инициалезация и передача str
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     
    char pass[9];
    for ( ; ; )
    {
        cin.sync();
        system("cls");
        if(!count) 
            exit(3);
        cout<<"Введите пароль для запуска программы\n";
        cout<<"Кол-во попыток: "<<count<<endl;
        cin>>pass;
        if (check_pass(pass)==1)
{//....}
else
{//....}
count статическая глобальная переменная которая по умолчанию = 3;

вот тело функции и с паролем

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool check_pass(char str[])
{
    char pass[9] = { 0 };
    FILE *file;
 
 
        file=fopen("pas.txt","r+t");
        
                            if (file==0) 
                                exit(-1);
                            else
        fgets(pass,9,file);
        fclose(file);
    if(strcmp(pass,str))
        return 0;
    else
        return 1;
}
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:34     ошибка при роботе с файлом "expresion str! = NULL" #8
shaffle,
C
1
2
3
4
if ( ( file = fopen("pass.txt" , "r")) != NULL) 
        fgets (pass,10,file);
    else
        printf ("error");
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:36  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #9
Цитата Сообщение от go Посмотреть сообщение
shaffle,
C
1
2
3
4
if ( ( file = fopen("pass.txt" , "r")) != NULL) 
        fgets (pass,10,file);
    else
        printf ("error");
error выводит
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.11.2011, 16:38     ошибка при роботе с файлом "expresion str! = NULL" #10
shaffle, ну так проверьте файл на существование, корректность имени, может он залочен другими приложениями и т.д. Мы тут уже не сможем помочь.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:39  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #11
Цитата Сообщение от fasked Посмотреть сообщение
shaffle, ну так проверьте файл на существование, корректность имени, может он залочен другими приложениями и т.д. Мы тут уже не сможем помочь.
то есть дело не в коде?
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:39     ошибка при роботе с файлом "expresion str! = NULL" #12
shaffle, укажите правильно полный путь к файлу.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:41  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #13
file=fopen("C:\Users\Диииииима\Documents\Dima\C++\2\all on one - копия\pas.txt","r+t");
не сработало..
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:42     ошибка при роботе с файлом "expresion str! = NULL" #14
shaffle, закинте файл на флэшку например
и укажите путь ввиде только диска
Jupiter
Каратель
Эксперт C++
6545 / 3965 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.11.2011, 16:43     ошибка при роботе с файлом "expresion str! = NULL" #15
Цитата Сообщение от shaffle Посмотреть сообщение
file=fopen("C:\Users\Диииииима\Documents\Dima\C++\2\all on one - копия\pas.txt","r+t");
не сработало..
обратный слеш должен быть двойным \\ либо ставте прямой слеш /
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:43     ошибка при роботе с файлом "expresion str! = NULL" #16
например "I:\\pass.txt"
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.11.2011, 16:43     ошибка при роботе с файлом "expresion str! = NULL" #17
shaffle, ну во-первых обратный слэш является экранирующим символом. Надо использовать два бэкслэша. Во-вторых кириллица в пути может сильно подтпортить ситуацию.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:48  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #18
спасибо. с полным путем обратные помогло
не знал на счет \\ и / для полного пути
спасибо
-=ЮрА=-
Заблокирован
Автор FAQ
20.11.2011, 18:54     ошибка при роботе с файлом "expresion str! = NULL" #19
shaffle, попробуйте читать fread, также помните что char pass нужно завершать нуль-терминатором, проще всего обнулить её элементы в самом начале, как сделал ниже, ну и не забывайте проверить сумела ли ваша программа получить доступ к файлу if(!file)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
char pass[9] = {0};
FILE *file=fopen("pas.txt","rt+");
if(!file)
       printf("Error open pas.txt\n";
else
{
       fread(pass,1,8*sizeof(char),file);
       fclose(file);
}
if(strcmp(pass,str))
    return 0;
else
    return 1;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 19:38     ошибка при роботе с файлом "expresion str! = NULL"
Еще ссылки по теме:

Ошибка str!=NULL. Как исправить? C++
C++ Найти ошибку в коде. Выдает "line 55 expresion str!=null"
Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf" C++
Ошибка ( Expression: str!=NULL) C++
Ошибка "*.exe вызвал срабатывание точки останова" и "HEAP CORRUPTION" при вызове деструктора программой C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 19:38  [ТС]     ошибка при роботе с файлом "expresion str! = NULL" #20
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
shaffle, попробуйте читать fread, также помните что char pass нужно завершать нуль-терминатором, проще всего обнулить её элементы в самом начале, как сделал ниже, ну и не забывайте проверить сумела ли ваша программа получить доступ к файлу if(!file)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
char pass[9] = {0};
FILE *file=fopen("pas.txt","rt+");
if(!file)
       printf("Error open pas.txt\n";
else
{
       fread(pass,1,8*sizeof(char),file);
       fclose(file);
}
if(strcmp(pass,str))
    return 0;
else
    return 1;
не работает, пишет что еррор опен пас.тхт

вобще надо не удобно чтто там адресс к файлу полный
так скидываешь кому то екзешник и файл, и не заработает
может ктото знает как исправить эту проблемку?
Yandex
Объявления
20.11.2011, 19:38     ошибка при роботе с файлом "expresion str! = NULL"
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru