Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

не откріваеться файл в С++

55K
12 февраля 2011 года
g00dv1n
22 / / 28.11.2010
не могу открыть файл , все время его не находит.
файл лежит так D:\fin.dat
пробовал бросать именно в корень
но все время файл не находит вот код

code.cpp
Код:
/Лабораторная работа №1.Студента группы Пс-10в.Брика Александра.

#include <iostream>
#include <fstream>
#include <conio.h>
#include <Windows.h>
#include "functions.h"

using namespace std; // Подключения простраства имен std

char name[15];        // Имя файла с которого производиться чтение
char rezult[15];     // Имя файла в который записуеться результат работы программы

// Создание структуры добычи полезных ископаемых стран , учавсвующих в программе

void menu ();        
void russian ();

int main()
{
    int menu_count=0;// счетчик для меню
    russian();
    menu();
    cout << "Ваш выбор" << endl <<"#: ";
    cin >> menu_count;
    while(menu_count!=3){
        switch (menu_count) {
            case 1: cout << "Введите имя файла в системе с которого будет производиться чтение" << endl<<">";
                    cin >> name;
                    break;

            case 2: if(read_out(name)){
                    }
                    else {
                        cout << "Файл не найден в системе , попробуйте заново ввести имя"<< endl;
                    }
                    break;

            default: cout << "В меню нет такого пункта пункта!" << endl
                          << "Повторите ввод";
                    break;
        }
        cout << "#: ";
        cin >> menu_count;
    }
    cout << "Конец програмы.."<<endl;
    getch();
    return 0;
}

// Шапка меню программы

void menu() {
    cout << "1. Задать имя файла " << endl
         << "2. Выполнить задание лаболаторной" << endl
         << "3. Выйти из программы " << endl;

}

// Переход на русский шрифт в консоли

void russian () {
    system("chcp 1251");
    system("cls");
}

functions.h
Код:
//Заголовочный файл с определением функций , использованых в программе

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int count=0;// Глобальный счетчик
int mount=0;// Количество годов в таблице
ifstream fin;
ofstream fout;

// Создание структуры добычи полезных ископаемых стран , учавсвующих в программе
extern struct strani{
    int year;
    float USA;
    float England;
    float France;
    float USSR;
};
strani table[5];

// Фунцкия чтения из файла

int read_out (char *file_name) {
    int i=0;
    fin.open(file_name);
    if(fin.fail()){
        return 0;
    }
    while (!fin.eof()){
        fin >> table.year
            >> table.USA
            >> table.England
            >> table.France
            >> table.USSR;
                       i++;

    }
    fin.close();
    return 1;
}
// Функция записи результата в файл результат

int write_rezult (char name[]) {
    fout.open(name);
    if(fin.fail())
        return 0;

    fout.close();
    return 1;
}


// Функция вывода на экран считаных результатов из файла

void print () {

}

// Функция которая выполняет задание лаболаторной

int job () {
   
   
    return 1;
}
64K
12 февраля 2011 года
flash_kpi
4 / / 05.11.2010
По моему в С++ когда вводишь путь к файлу, надо вводить не 1 \, a 2 \\...Т.е. будет выглядеть так D:\\fin.dat
278
12 февраля 2011 года
Alexander92
1.1K / / 04.08.2008
И это касается не только путей к файлу. =) Почитайте про escape-последовательности.
55K
12 февраля 2011 года
g00dv1n
22 / / 28.11.2010
Спасибо почитал , думал что понял в чем ошибка . Но все равно файл не открывает

пробовал просто записать в файл число или что то в этом роде. Файл создает но ничего не записывает
9
12 февраля 2011 года
Lerkin
3.0K / / 25.03.2003
Внимательней. Уже одна ошибочка.
 
Код:
int write_rezult (char name[]) {
    fout.open(name);
    if(fin.fail())
        return 0;
...

Да и как будет произведена запись этой функцией?
278
12 февраля 2011 года
Alexander92
1.1K / / 04.08.2008
Да, кстати, еще замечание... Никогда и ни при каких обстоятельствах не помещайте тело функции в заголовочный файл. При первом же более или менее сложном проекте вы натолкнетесь на кучу проблем по имени "function redefinition". За подробностями - к дедушке Страуструпу. :)

Цитата:

 
Код:
system("chcp 1251");


Это делается средствами языка, обращаться к системным вызовам для этого совсем не обязательно: setlocale().

55K
12 февраля 2011 года
g00dv1n
22 / / 28.11.2010
Спасибо все учел.
535
12 февраля 2011 года
Нездешний
537 / / 17.01.2008
Цитата: Alexander92
Никогда и ни при каких обстоятельствах не помещайте тело функции в заголовочный файл

Сильное утверждение!

278
12 февраля 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=Б. Страуструп]
Заголовочный файл не должен содержать определения обычных функций:
 
Код:
char get (char *p) {return *p++;}

[/QUOTE]

© Б.Страуструп, страница 246. :)

Разумеется, к стандарту языка это никакого отношения не имеет, но с точки зрения удобства - на 100% разделяю эту позицию.
535
12 февраля 2011 года
Нездешний
537 / / 17.01.2008
А с шаблонами как быть? :)

Да и удобство для каждого свое. А от redefinition и redeclaration в данном случае легко избавиться с помощью "стражей включения"
 
Код:
//some_header.h
#ifndef SOME_HEADER_H
#define SOME_HEADER_H
//code
#endif
278
12 февраля 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=Нездешний]
А с шаблонами как быть?
[/QUOTE]
А какие там проблемы? Или я вас не понял?

Согласитесь, что заголовочный файл не зря так называется, на то он и должен содержать, в первую очередь, заголовки, а не реализацию. :)

P.S.: я ж не утверждаю, что писать функции в h-файлы нельзя вообще никогда, просто в 99% Страуструп действительно прав =)
535
12 февраля 2011 года
Нездешний
537 / / 17.01.2008
[QUOTE=Alexander92]А какие там проблемы? Или я вас не понял?[/QUOTE]А вы попробуйте ;) Объявите шаблонную функцию в some.h, а реализацию попробуйте написать в some.cpp и использовать функцию в main.cpp :)
Например, переделайте что-нибудь такое:
Код:
//func.h
#ifndef FUNC_H
#define FUNC_H

#include <sstream>

template <typename Target>
Target StringTo(std::string s)
{
    std::istringstream iss;
    iss.str(s);
    Target t;
    iss >> t;
    return t;
}

#endif

//main.cpp
#include "func.h"
...
double dValue = StringTo<double>("3.14") + 2;


[QUOTE=Alexander92]Никогда и ни при каких обстоятельствах не помещайте тело функции в заголовочный файл

я ж не утверждаю, что писать функции в h-файлы нельзя вообще никогда[/QUOTE]Раздвоение личности? :D
278
12 февраля 2011 года
Alexander92
1.1K / / 04.08.2008
Намекаете на запрет на
 
Код:
extern template ...

?
Тогда считайте, что убедили. :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог