0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
1

Чтение из файла

24.06.2014, 18:25. Показов 1659. Ответов 34
Метки нет (Все метки)

Здравствуйте, прошу помощи... Я только начала изучение, поэтому еще слишком плохо разбираюсь даже в элементарных вещах, прошу не судить строго...

Было определенное задание, выполнила я его используя свои знания, а они очень малы, как я уже говорила. Код хоть и выглядит ужасно, но работает, и в принципе отвечает требованиям.

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, что-то свое, что угодно еще), которую необходимо создать разработчику"

Что это имеют ввиду? Не совсем понимаю, как это надо было делать...если кто может, подскажите. Заранее благодарна..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2014, 18:25
Ответы с готовыми решениями:

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, &quot;ing&quot;) в текстовом документе. в...

Чтение чисел из файла. Чтение после конца потока невозможно
Товарищи, помогите. В Pascal'e я не силен, так что не бейте меня ногами, но есть задача: написать...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -&gt; Vehicles -&gt; Firetruck_0 В этой папке лежит...

Чтение заголовка PCX файла и чтение растровых данных PCX файла
Привет форумчане! Столкнулся с такой проблемой. Нужно считать заголовок PCX файла и растровые...

34
Модератор
Эксперт С++
12780 / 10236 / 6150
Регистрация: 18.12.2011
Сообщений: 27,405
24.06.2014, 18:56 2
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Что это имеют ввиду?
Строки, определяющие варианты, варианты ответов и т.п. должны быть записаны в файл,
а не в текст программы.
Это дает 1. Легкий перевод игры на другой язык.
2. Изменение игры без перекомпиляции программы.
1
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 08:52  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
Строки, определяющие варианты, варианты ответов и т.п. должны быть записаны в файл,
а не в текст программы.
Это дает 1. Легкий перевод игры на другой язык.
2. Изменение игры без перекомпиляции программы.
Спасибо, а то я не поняла, что именно нужно в отдельный файл выносить. Я конечно пока не знаю, как это делается, но буду пробовать.

Добавлено через 11 часов 28 минут
Пол ночи просидела....не понимаю как это можно реализовать
0
Модератор
Эксперт С++
12780 / 10236 / 6150
Регистрация: 18.12.2011
Сообщений: 27,405
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 << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-";
  }
// и т.д.
}
0
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 символов?
0
Модератор
Эксперт по электронике
8784 / 6570 / 891
Регистрация: 14.02.2011
Сообщений: 23,076
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];
0
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;
}
Правильно ли это?
0
Модератор
Эксперт по электронике
8784 / 6570 / 891
Регистрация: 14.02.2011
Сообщений: 23,076
25.06.2014, 11:51 8
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Правильно ли это?
можно конечно
но блокнот, не проще???
1
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 11:56  [ТС] 9
Цитата Сообщение от ValeryS Посмотреть сообщение
можно конечно
но блокнот, не проще???
А что, можно просто в блокнот? Буду знать. Не знаете в чем может быть причина, почему в консоли "0000000000000000"?
0
Модератор
Эксперт по электронике
8784 / 6570 / 891
Регистрация: 14.02.2011
Сообщений: 23,076
25.06.2014, 12:03 10
Цитата Сообщение от Alexandra7 Посмотреть сообщение
Не знаете в чем может быть причина, почему в консоли "0000000000000000"?
не знаю
файл нужно проверять открылся или нет
вполне может не найти пути, файл занят и еще куча причин чтобы файл не открылся
для начала пройди программу в отладчике
Цитата Сообщение от Alexandra7 Посмотреть сообщение
А что, можно просто в блокнот
так для этого и придуман текстовый режим(формат), чтобы дизайнер не мучался, а писал в удобном ему редакторе
найди книгу "Qt 4.7+ Практическое программирование на С++" А. Боровский
одна глава описывает создание игры "сокобан" с применением текстового файла конфигурации
1
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 и выполняет его и поэтому ошибок никаких и нет....
0
Модератор
Эксперт С++
12780 / 10236 / 6150
Регистрация: 18.12.2011
Сообщений: 27,405
25.06.2014, 12:46 12
Файл должен находиться в текущей папке
(если запускаете из отладчика, то это папка проекта).
Можете написать полный путь к файлу, например:
C++
1
ifstream data("c:\\temp\\file.dat");
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 13:08  [ТС] 13
Цитата Сообщение от zss Посмотреть сообщение
Можете написать полный путь к файлу, например:
Код C++
1
ifstream data("c:\\temp\\file.dat");
Да, так и сделала, и слеш двойной везде, но все равно не хочет открываться....
0
98 / 101 / 30
Регистрация: 21.10.2012
Сообщений: 320
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();
2
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 13:33  [ТС] 15
Цитата Сообщение от Denno Посмотреть сообщение
Попробуй проверить
Пишет, что файл открыт, и после этого : 0000000000000000000 . И все..
0
98 / 101 / 30
Регистрация: 21.10.2012
Сообщений: 320
25.06.2014, 13:59 16
Перезагрузите компьютер, я думаю, что поможет. )) Дело в том, что у вам в коде файл ни где не закрывался и возможно поэтому и получилась такая ситуация.
0
11 / 11 / 5
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:08 17
А в чем компилируете ?

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

Добавлено через 1 минуту
Цитата Сообщение от LifeMoroz Посмотреть сообщение
А в чем компилируете ?
VS 2010
0
17086 / 9115 / 2230
Регистрация: 30.01.2014
Сообщений: 15,887
25.06.2014, 14:13 19
Alexandra7, покажите свой последний вариант, который компилируете и не работает.
0
11 / 11 / 5
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:16 20
Меня тут осенило, а вы как файлик то создали?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2014, 14:16
Помогаю со студенческими работами здесь

Чтение файла CSV и чтение из Table View
Здравствуйте, задача считать столбцы и строки excel в TextEdit. Прошу помощи в реализиции. ...

Переделать в коде чтение из файла в чтение с клавиатуры
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл...

Чтение бинарного файла - чтение первых 9 байт
Есть код, который читает первые 9 байт бинарного файла(заголовок записи) void...

Чтение из файла. Повторное чтение файла
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае...

Создание файла с массивом и чтение этого файла обратно используя ShareActionProvider
Есть созданный массив, после нажатия на кнопку он должен вносится в файл, а потом передать этот...

Внешняя сортировка бинарного файла (чтение после конца файла невозможно)
Помогите отладить программу, не вижу, что здесь можно сделать. Похоже, курсор файла где-то в коде...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru