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

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

Войти
Регистрация
Восстановить пароль
 
Керра
 Аватар для Керра
1275 / 443 / 45
Регистрация: 24.08.2011
Сообщений: 2,131
#1

Одинаковый фрагмент действует по-разному в двух программах - C++

24.11.2014, 16:22. Просмотров 182. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <fstream>
#include <iostream>
using namespace std;
 
int main()
{
    ifstream fin;
    char name[50];
    do
    {
        cout << "Vvedite: ";
        gets(name);
        fin.open(name);
        if (!fin.is_open())
            cout << "Oshibka pri otkrytii faila!\n";
    } while (!fin.is_open());
    fin.getline(name, 50);
    fin.close();
    cout << name << endl;
    system("pause");
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Shelving::Shelving()
{
    ifstream fin;
    char filename[50];
    do
    {
        cout << "Vvedite puti k failu s dannymi o stellaje: ";
        gets(filename);
        fin.open(filename);
        if (!fin.is_open())
            cout << "Oshibka pri otkrytii faila!\n";
    } while (!fin.is_open());
 
    fin.getline(name, 50);
    fin >> nWarehouse >> nItems;
    for (int i = 0; i < nItems; i++)
        items[i] = new Item(fin);
    fin.close();
}
При вводе имени одного и того же существующего корректного текстового файла первая программа работает, а на втором фрагменте происходит ошибка со считыванием строки на строке fin.getline(name, 50) (см. вложение). В чем вообще разница и почему не работает? Вкладываю проект на всякий случай.
Миниатюры
Одинаковый фрагмент действует по-разному в двух программах  
Вложения
Тип файла: rar Climova Olga 01.rar (5.40 Мб, 1 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2014, 16:22     Одинаковый фрагмент действует по-разному в двух программах
Посмотрите здесь:

C++ Использование указателей в программах
C++ Вывести на экран текст состоящий из слов которые начинаются и заканчиваются на одинаковый символ
C++ Русские буквы в программах VS2010
C++ Почему одинаковые коды работают по разному?
блок программы скобки, всегда встречаю по разному C++
C++ Fflush(stdin) по-разному работают в unix и windows
Почему в разных учебниках главная функция называется по разному? C++
Цикл по-разному выполняет одинаковые команды C++
C++ Почему в книгах по C++ материал подаётся по-разному?
C++ Одинаковый id в двух потоках
Std::forward_list по-разному ведет себя с компиляторами gcc и vc++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 16:25     Одинаковый фрагмент действует по-разному в двух программах #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Во втором куске name инициализирован и права доступа есть?
Керра
 Аватар для Керра
1275 / 443 / 45
Регистрация: 24.08.2011
Сообщений: 2,131
24.11.2014, 16:29  [ТС]     Одинаковый фрагмент действует по-разному в двух программах #3
ssergius, да. Это закрытый член класса Shelving.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Shelving
{
public:
    Shelving(); // конструктор по умолчанию
    Shelving(char *filename); // из файла
    ~Shelving(); // деструктор
    friend ostream& operator << (ostream &out, const Shelving &el);
    friend ofstream& operator << (ofstream &fout, const Shelving &el);
    void PrintFile();
    void Correct();
    bool SameItem();
    float TotalWeight();
    void Search(); // по названию детали
    bool More10NotHigher2();
private:
    char *name;
    int nWarehouse;
    (Item*) items[50];
    int nItems;
    Item& Search(char *name); // по названию детали
};
При компиляции все нормально

Добавлено через 28 секунд
ssergius, все, поняла... я же не инициализировала...
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,393
24.11.2014, 16:46     Одинаковый фрагмент действует по-разному в двух программах #4
Цитата Сообщение от Керра Посмотреть сообщение
fin.open(filename);
fin.close();
избегайте такого подхода - напишите обертку на основе паттерна RAII
Yandex
Объявления
24.11.2014, 16:46     Одинаковый фрагмент действует по-разному в двух программах
Ответ Создать тему
Опции темы

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