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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
#1

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

20.11.2011, 16:23. Просмотров 2147. Ответов 21
Метки нет (Все метки)

не знаю почему, но выдает постоянно эту ошибку
вот нужная часть кода
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 символом и больше ничего
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2011, 16:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ошибка при роботе с файлом "expresion str! = NULL" (C++):

Найти ошибку в коде. Выдает "line 55 expresion str!=null" - C++
Ребятки помогите пожалуйста , вылетает вот такая ошибка :line 55 expresion str!=null //Melnik M . V . #include <stdio.h> #include...

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9" - C++
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; Hdd *next; Hdd *previous; };

Что происходит при char *str = ""? - C++
Объясните, пожалуйста, что происходит при const chat *str = "hello" Т.е. тут явно у нас присутствует только объявления указателя str,...

Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf" - C++
Сделал многофайловую программу программу, вот она: //golf.h #include <iostream> #ifndef golg_h_ #define golf_h_ const int Len =...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

Из-за чего может возникать следующая ошибка: "Invalid null pointer"? - C++
NEBTELA* fggff; //указатель на объект базового класса fggff = new Zvezda; //переопределение в объект производного класса в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.11.2011, 16:26 #2
Цитата Сообщение от shaffle Посмотреть сообщение
char pass[9];
а если массив объявить так
C++
1
char pass[9] = { 0 };
а считывать вот так
C++
1
fgets(pass, 9, file);
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.11.2011, 16:27 #3
shaffle, а str это что такое? И, кстати, всяческие fopen, fgets неплохо бы на ошибки проверять. Вместо strcmp лучше использовать strncmp.
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:28  [ТС] #4
не помогло..

Добавлено через 52 секунды
str я передаю в функцию, он вводиться в мейне..
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.11.2011, 16:29 #5
Цитата Сообщение от shaffle Посмотреть сообщение
str я передаю в функцию, он вводиться в мейне
Как вводится, как передается? Чтобы не тянуть резину, я сейчас намекаю на то, что неплохо бы выложить побольше кода.
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:29 #6
shaffle, как вы str инициализировали?
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:34  [ТС] #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;
}
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:34 #8
shaffle,
C
1
2
3
4
if ( ( file = fopen("pass.txt" , "r")) != NULL) 
        fgets (pass,10,file);
    else
        printf ("error");
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:36  [ТС] #9
Цитата Сообщение от go Посмотреть сообщение
shaffle,
C
1
2
3
4
if ( ( file = fopen("pass.txt" , "r")) != NULL) 
        fgets (pass,10,file);
    else
        printf ("error");
error выводит
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.11.2011, 16:38 #10
shaffle, ну так проверьте файл на существование, корректность имени, может он залочен другими приложениями и т.д. Мы тут уже не сможем помочь.
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:39  [ТС] #11
Цитата Сообщение от fasked Посмотреть сообщение
shaffle, ну так проверьте файл на существование, корректность имени, может он залочен другими приложениями и т.д. Мы тут уже не сможем помочь.
то есть дело не в коде?
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:39 #12
shaffle, укажите правильно полный путь к файлу.
0
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
20.11.2011, 16:41  [ТС] #13
file=fopen("C:\Users\Диииииима\Documents\Dima\C++\2\all on one - копия\pas.txt","r+t");
не сработало..
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
20.11.2011, 16:42 #14
shaffle, закинте файл на флэшку например
и укажите путь ввиде только диска
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.11.2011, 16:43 #15
Цитата Сообщение от shaffle Посмотреть сообщение
file=fopen("C:\Users\Диииииима\Documents\Dima\C++\2\all on one - копия\pas.txt","r+t");
не сработало..
обратный слеш должен быть двойным \\ либо ставте прямой слеш /
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2011, 16:43
Привет! Вот еще темы с ответами:

При компиляции ошибка: C2228: left of ".real",".imag" must have struct/class/union - C++
Помогите, пожалуйста! Компилирую в VS2010... Ошибка: C2228: left of &quot;.real&quot;,&quot;.imag&quot; must have struct/class/union... Почему возникает эта...

Возникает ошибка "0xC0000005: Нарушение прав доступа при чтении "0xfeeefee2"." - C++
Подскажите, пожалуйста, в чем может быть ошибка и как его исправить? В деструкторе указывает на ошибку. #pragma once class...

Ошибка "*.exe вызвал срабатывание точки останова" и "HEAP CORRUPTION" при вызове деструктора программой - C++
Здравствуйте! Сделал простенькое упражнение на указатели, но программа выдает названные ошибки. При первом после последнего сохранения...

Ошибка ( Expression: str!=NULL) - C++
Выдает ошибку ( Expression: str!=NULL) , вроде сначала работало все, а потом стало вот это выпадать, помогите пожалуйста #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.11.2011, 16:43
Ответ Создать тему
Опции темы

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