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

Чтение из файла - C++

Восстановить пароль Регистрация
 
 
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
24.06.2014, 18:25     Чтение из файла #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
44
45
46
47
48
49
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
 
 
void func()
{
    char a [2]="1";
    char a1[2];
    char b [2]="2";
    char b1[2];
  cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
  cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
  cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-"<< endl;
  cout << "\t\t\tYou are in the big room.\n\t\tAt centre of the room is swimming pool.\n\t\   You are see in the swimming pool an angry crocodile."<<endl<<endl;
  cout << "\n You are: (Please select '1' or '2', and press \"Enter\")"<< endl << endl;
  cout << "    (1)   Go away from the room.           (2)   Approach to the swimming pool."<< endl << endl;   
  
  cin.getline(a1, 2);
    
  if(strcmp (a1, b) == 0){
        cout << "\n\n You are see the crocodile, and you realizen what that is the most bloodthirsty \t of all the crocodile.\n\n";
        cout << " Your actions:  (Please select '1' or '2', and press \"Enter\") " << endl << endl;
        cout << " (1) You're cute, you're running out of room.\n"; 
        cout << " (2) You're crazy, you're poke him in the eye by thumb of your left leg.\n";
    
        cin.getline(b1, 2);
    
            if (strcmp (b1, b) == 0){
            cout << "\n\n Crocodile bitten your leg. You haven't could go, crocodile have eaten you all.\n"<< endl << endl;
            cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
            cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
            cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-";
            system("pause");
            }
            else func();
    
        }
    }
    
 
int main(void)
{
 
    func();
    return 0;
    system("PAUSE");    
}

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

Источником информации для нее служит текстовый файл определенной структуры (xml, json, что-то свое, что угодно еще), которую необходимо создать разработчику"

Что это имеют ввиду? Не совсем понимаю, как это надо было делать...если кто может, подскажите. Заранее благодарна..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2014, 18:25     Чтение из файла
Посмотрите здесь:

Чтение из файла C++
C++ Чтение из файла.
C++ Чтение из файла
C++ Чтение файла
Чтение из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
24.06.2014, 18:56     Чтение из файла #2
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Что это имеют ввиду?
Строки, определяющие варианты, варианты ответов и т.п. должны быть записаны в файл,
а не в текст программы.
Это дает 1. Легкий перевод игры на другой язык.
2. Изменение игры без перекомпиляции программы.
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 08:52  [ТС]     Чтение из файла #3
Цитата Сообщение от zss Посмотреть сообщение
Строки, определяющие варианты, варианты ответов и т.п. должны быть записаны в файл,
а не в текст программы.
Это дает 1. Легкий перевод игры на другой язык.
2. Изменение игры без перекомпиляции программы.
Спасибо, а то я не поняла, что именно нужно в отдельный файл выносить. Я конечно пока не знаю, как это делается, но буду пробовать.

Добавлено через 11 часов 28 минут
Пол ночи просидела....не понимаю как это можно реализовать
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
25.06.2014, 09:11     Чтение из файла #4
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
44
45
46
47
48
49
50
51
void func()
{
    ifstream data("file.dat");
    if(!data)
    {
          cout<<"iput file file.dat open error"<<endl;
          return;
    }
    char a[100];
    //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
  //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
  //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-"<< endl;
  //cout << "\t\t\tYou are in the big room.\n\t\tAt centre of the room is swimming pool.\n\t\   You are see in the swimming pool an angry crocodile."<<endl<<endl;
  //cout << "\n You are: (Please select '1' or '2', and press \"Enter\")"<< endl << endl;
  //cout << "    (1)   Go away from the room.           (2)   Approach to the swimming pool."<< endl << endl;  
  for(int i=1;i<=6;i++)// чтение и вывод заголовка из файла
  {
       data.getline(a,100);
       cout<<data;
  } 
  char b[4,100];
  for(int i=0;i<4;i++)// чтение 1 ситуации из файла
  {
       data.getline(b[i],100);
  } 
  char c[4,100];
  for(int i=0;i<4;i++)// чтение 2 ситуации из файла
  {
       data.getline(c[i],100);
  } 
  char a1[2];  
  cin.getline(a1, 2);
  if(strcmp (a1, "1") == 0)
  {
      for(int i=0;i<4;i++)// вывод 1 ситуации
            cout<<b[i]; 
       //cout << "\n\n You are see the crocodile, and you realizen what that is the most bloodthirsty \t of all the crocodile.\n\n";
        //cout << " Your actions:  (Please select '1' or '2', and press \"Enter\") " << endl << endl;
        //cout << " (1) You're cute, you're running out of room.\n"; 
        //cout << " (2) You're crazy, you're poke him in the eye by thumb of your left leg.\n";
  }else
  {   
      for(int i=0;i<4;i++)// вывод 2 ситуации
            cout<<с[i]; 
         //cout << "\n\n Crocodile bitten your leg. You haven't could go, crocodile have eaten you all.\n"<< endl << endl;
         //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
         //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
         //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-";
  }
// и т.д.
}
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 11:31  [ТС]     Чтение из файла #5
Цитата Сообщение от zss Посмотреть сообщение
char b[4,100];
* for(int i=0;i<4;i++)// чтение 1 ситуации из файла
* {
* * * *data.getline(b[i],100);
* }
* char c[4,100];
* for(int i=0;i<4;i++)// чтение 2 ситуации из файла
* {
* * * *data.getline(c[i],100);
* }
Компилятор ругается на char b[4,100]; и на char c[4,100]; - Я правильно понимаю, что что это имеется ввиду 4 строки по 100 символов?
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
25.06.2014, 11:39     Чтение из файла #6
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Компилятор ругается на char b[4,100]; и на char c[4,100]; - Я правильно понимаю, что что это имеется ввиду 4 строки по 100 символов?
это скорее всего опечатка
по видимому
C++
1
2
 char b[4][100];
 char c[4][100];
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 11:48  [ТС]     Чтение из файла #7
Да, я тоже так подумала, и так же написала, но почему-то в консоль выводятся нули, скорее всего я что-то не правильно делаю. Текстовый файл я создавала вот таким образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
using namespace std;
 
int main(int argc, char* argv[]){
ofstream F("croco.txt");
F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-\n";
F << "\t\t\tYou are in the big room.\n\t\tAt centre of the room is swimming pool.\n\t\   You are see in the swimming pool an angry crocodile.\n\n\n You are: (Please select '1' or '2', and press \"Enter\")\n\n";
F << "    (1)   Go away from the room.           (2)   Approach to the swimming pool.\n\n";   
F << "\n\n You are see the crocodile, and you realizen what that is the most bloodthirsty \t of all the crocodile.\n\n";
F << " Your actions:  (Please select '1' or '2', and press \"Enter\") \n\n";
F << " (1) You're cute, you're running out of room.\n"; 
F << " (2) You're crazy, you're poke him in the eye by thumb of your left leg.\n";
F << "\n\n Crocodile bitten your leg. You haven't could go, crocodile have eaten you all.\n\n\n";
F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-";
F.close();
system("pause");
return 0;
}
Правильно ли это?
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
25.06.2014, 11:51     Чтение из файла #8
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Правильно ли это?
можно конечно
но блокнот, не проще???
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 11:56  [ТС]     Чтение из файла #9
Цитата Сообщение от ValeryS Посмотреть сообщение
можно конечно
но блокнот, не проще???
А что, можно просто в блокнот? Буду знать. Не знаете в чем может быть причина, почему в консоли "0000000000000000"?
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
25.06.2014, 12:03     Чтение из файла #10
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Не знаете в чем может быть причина, почему в консоли "0000000000000000"?
не знаю
файл нужно проверять открылся или нет
вполне может не найти пути, файл занят и еще куча причин чтобы файл не открылся
для начала пройди программу в отладчике
Цитата Сообщение от Alexandra7 Посмотреть сообщение
А что, можно просто в блокнот
так для этого и придуман текстовый режим(формат), чтобы дизайнер не мучался, а писал в удобном ему редакторе
найди книгу "Qt 4.7+ Практическое программирование на С++" А. Боровский
одна глава описывает создание игры "сокобан" с применением текстового файла конфигурации
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 12:39  [ТС]     Чтение из файла #11
Однозначно какая-то проблема с файлом, потому что нули выдает в консоли только если закоментировать вот этот кусок:
C++
1
2
3
4
5
if(!data)
 {
cout<<"iput file file.dat open error"<<endl;
 return;
}
И пишет: Машинный код" завершилась с кодом -1073741510
А если его не комментировать, то консоль открывается и тут же закрывается, и пишет: Машинный код" завершилась с кодом 0. Ну то есть, как я понимаю, он просто переходит в этот if и выполняет его и поэтому ошибок никаких и нет....
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,167
Завершенные тесты: 1
25.06.2014, 12:46     Чтение из файла #12
Файл должен находиться в текущей папке
(если запускаете из отладчика, то это папка проекта).
Можете написать полный путь к файлу, например:
C++
1
ifstream data("c:\\temp\\file.dat");
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 13:08  [ТС]     Чтение из файла #13
Цитата Сообщение от zss Посмотреть сообщение
Можете написать полный путь к файлу, например:
Код C++
1
ifstream data("c:\\temp\\file.dat");
Да, так и сделала, и слеш двойной везде, но все равно не хочет открываться....
Denno
50 / 50 / 6
Регистрация: 21.10.2012
Сообщений: 185
Завершенные тесты: 3
25.06.2014, 13:27     Чтение из файла #14
Еще может быть, что файл уже открыт и используется.

Добавлено через 6 минут
Попробуй проверить:

C++
1
2
3
4
5
6
7
8
    std::ifstream infile("file.dat");
 
    if (infile.is_open())
    {
        std::cout << "Файл открыт" << std::endl;
    }
 
    infile.close();
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 13:33  [ТС]     Чтение из файла #15
Цитата Сообщение от Denno Посмотреть сообщение
Попробуй проверить
Пишет, что файл открыт, и после этого : 0000000000000000000 . И все..
Denno
50 / 50 / 6
Регистрация: 21.10.2012
Сообщений: 185
Завершенные тесты: 3
25.06.2014, 13:59     Чтение из файла #16
Перезагрузите компьютер, я думаю, что поможет. )) Дело в том, что у вам в коде файл ни где не закрывался и возможно поэтому и получилась такая ситуация.
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:08     Чтение из файла #17
А в чем компилируете ?

Дело в том, что у вам в коде файл ни где не закрывался и возможно поэтому и получилась такая ситуация.
VS например, прибивает самостоятельно. Но вообще мне кажется, если файл используется, то будет флаг ошибки при открытии.
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 14:09  [ТС]     Чтение из файла #18
Цитата Сообщение от Denno Посмотреть сообщение
Перезагрузите компьютер, я думаю, что поможет. )) Дело в том, что у вам в коде файл ни где не закрывался и возможно поэтому и получилась такая ситуация.
Перезагружала уже и даже создала новый проект и файл текстовый новый, все тоже самое!

Добавлено через 1 минуту
Цитата Сообщение от LifeMoroz Посмотреть сообщение
А в чем компилируете ?
VS 2010
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
25.06.2014, 14:13     Чтение из файла #19
Alexandra7, покажите свой последний вариант, который компилируете и не работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 14:16     Чтение из файла
Еще ссылки по теме:

Чтение из файла. Повторное чтение файла C++
Чтение из файла C++
Чтение файла с несколькими знаками конца файла C++

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

Или воспользуйтесь поиском по форуму:
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:16     Чтение из файла #20
Меня тут осенило, а вы как файлик то создали?
Yandex
Объявления
25.06.2014, 14:16     Чтение из файла
Ответ Создать тему
Опции темы

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