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

Файловые потоки. Подскажите, где ошибка - C++

Восстановить пароль Регистрация
 
Syndarin
13 / 13 / 1
Регистрация: 15.09.2009
Сообщений: 57
12.05.2010, 09:14     Файловые потоки. Подскажите, где ошибка #1
Добрый день!
Помогите разобраться, плиз: суть задачи в подсчете количества ненулевых элементов в заранее заготовленном файле. Вот что я написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
 
void main()
{
 
ifstream myf;
int k=0;
char name[10];
int error=1;
int temp;
 
while(error)
{
    cout<<"Input file name: \n";
    cin>>name;
    myf.open(name);
    if(myf.fail())
    {
        cout<<"File is not open!\n";
        getch();
        continue;
    }
    else
    {
        while(myf>>temp)
        {
            cout<<temp<<"->";
            if(temp!=0)
                k++;
        }
        cout<<"EOF\n";
        cout<<"V fayle "<<name<<" soderjitsa "<<k<<" nenulevih elementov.\n";
        error=0;
        myf.close();
        getch();
    }
    
 
 
}
}
Суть проблемы в том, что не происходит обработки ошибки открытия файла. При вводе заведомо некорректного значения программа создает новый файл.
Во вложении - архив с проектом.


Заранее благодарен.
Вложения
Тип файла: rar lab1oop.rar (250.7 Кб, 12 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2010, 09:14     Файловые потоки. Подскажите, где ошибка
Посмотрите здесь:

C++ Файловые потоки
Файловые потоки C++
C++ Бинарные файловые потоки
C++ Файловые потоки
C++ Файловые потоки данных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
12.05.2010, 09:59     Файловые потоки. Подскажите, где ошибка #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        myf.open(name, ifstream::in);
        if(!myf.is_open())
        {
                cout<<"File is not open!\n";
                getch();
                continue;
        }
        else
        {
               while(myf.good())
                {
                       myf>>temp;
                       //................
Syndarin
13 / 13 / 1
Регистрация: 15.09.2009
Сообщений: 57
13.05.2010, 01:14  [ТС]     Файловые потоки. Подскажите, где ошибка #3
То же самое(((
Rajd
 Аватар для Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
13.05.2010, 04:29     Файловые потоки. Подскажите, где ошибка #4
Цитата Сообщение от Syndarin Посмотреть сообщение
То же самое(((
травбла с самим ifstream он по умолчанию сам создает файл если его нет, принудительно не давать ему делать это.
C++
1
myf.open(name, ifstream::in| ifstream::nocreate);
Syndarin
13 / 13 / 1
Регистрация: 15.09.2009
Сообщений: 57
13.05.2010, 09:21  [ТС]     Файловые потоки. Подскажите, где ошибка #5
Ошибку обрабатывает, но теперь другая проблема - не открывает реально существующий файл)))))

Добавлено через 14 минут
Всем спасибо за помощь, вроде разобрался. Видимо, это какие-то заморочки VC++ т.к. запустил свой исходный код в TC - заработало без проблем.
Yandex
Объявления
13.05.2010, 09:21     Файловые потоки. Подскажите, где ошибка
Ответ Создать тему
Опции темы

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