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

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

Войти
Регистрация
Восстановить пароль
 
 
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
#1

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

24.06.2014, 18:25. Просмотров 1006. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2014, 18:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла (C++):

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

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

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Denno
52 / 52 / 7
Регистрация: 21.10.2012
Сообщений: 195
Завершенные тесты: 3
25.06.2014, 13:59 #16
Перезагрузите компьютер, я думаю, что поможет. )) Дело в том, что у вам в коде файл ни где не закрывался и возможно поэтому и получилась такая ситуация.
0
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:08 #17
А в чем компилируете ?

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

Добавлено через 1 минуту
Цитата Сообщение от LifeMoroz Посмотреть сообщение
А в чем компилируете ?
VS 2010
0
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,094
25.06.2014, 14:13 #19
Alexandra7, покажите свой последний вариант, который компилируете и не работает.
0
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:16 #20
Меня тут осенило, а вы как файлик то создали?
0
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 14:19  [ТС] #21
Цитата Сообщение от LifeMoroz Посмотреть сообщение
Меня тут осенило, а вы как файлик то создали?
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
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:24 #22
А добавьте еще последнюю версию "читающего" кода. Будет совсем хорошо)
0
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 14:29  [ТС] #23
Цитата Сообщение от LifeMoroz Посмотреть сообщение
А добавьте еще последнюю версию "читающего" кода. Будет совсем хорошо)
Даже страшно....я ведь почти ничего не меняла....
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <string.h>
#include <fstream>
#include <stdlib.h>
using namespace std;
 
void func()
{
    ifstream data("D:\\Новая папка (2)\\Crocodile\\croco.txt");
    
    if(!data)
    {
          cout<<"iput file file.dat open error"<<endl;
          
          system("pause");
    }
    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] = "1";  
  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<<c[i]; 
         //cout << "\n\n Crocodile bitten your leg. You haven't could go, crocodile have eaten you all.\n"<< endl << endl;
         //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
         //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*";
         //cout << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-";
  }
// и т.д.
} 
 
int main () {
    func();
    return 0;
    system("PAUSE");
}
0
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:33 #24
Цитата Сообщение от Alexandra7 Посмотреть сообщение
ifstream data("D:\\Новая папка (2)\\Crocodile\\croco.txt");
Вот это мне очень не нравится, вы нигде не указали setlocale(LC_ALL, "Rus"); Поэтому русская кодировка не лучшая идея, уберите из пути все русское (Например в корень D: закиньте) и просто на всякий случай пропишите аналогичный абсолютный путь и в "добавлении"
1
Alexandra7
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 19
25.06.2014, 14:39  [ТС] #25
Цитата Сообщение от LifeMoroz Посмотреть сообщение
Вот это мне очень не нравится, вы нигде не указали setlocale(LC_ALL, "Rus"); Поэтому русская кодировка не лучшая идея, уберите из пути все русское (Например в корень D: закиньте) и просто на всякий случай пропишите аналогичный абсолютный путь и в "добавлении"
Спасибо, но к сожалению ничего не изменилось...
0
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:46 #26
А еще можно попробовать выводить не поток, а строку )))
for(int i=1;i<=6;i++)// чтение и вывод заголовка из файла
{
data.getline(a,100);
cout<<a;
}
0
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,094
25.06.2014, 14:47 #27
Цитата Сообщение от LifeMoroz Посмотреть сообщение
setlocale(LC_ALL, "Rus");
Это не поможет. Русское в исходнике плохо тем, что кодировка файла может измениться, скажем исходник в 1251, а файловая система ожидает имена в utf-8. А setlocale не касается имен файлов, только ввода\вывода. Проще говоря локаль и кодировка исходного файла - это разные вещи.

Проблема же ТС похоже в том, что количество строк в файле не соответствует ожидаемому. В генераторе файла не хватает \n в некоторых местах. Поэтому нули выводятся.
0
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 14:52 #28
А кто говорил о кодировке исходного файла?
Я имел ввиду, что путь к файлику может резко оказаться не тем, который ожидается
0
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,094
25.06.2014, 14:59 #29
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от LifeMoroz Посмотреть сообщение
А кто говорил о кодировке исходного файла?
Ты говорил.
Цитата Сообщение от LifeMoroz Посмотреть сообщение
уберите из пути все русское
Путь прописан в исходном файле. Этот файл имеет свою кодировку, скорее всего это 1251. Упоминание setlocale говорит о том, что у тебя существует заблуждение по поводу влияния локали на пути файлов. Хотя в данном случае влияет не локаль, а кодировка, в которой записан cpp. Так яснее?

Alexandra7, вот файл на котором заработало. Еще есть ошибка в коде, где считывается файл: написано
C++
1
 cout << data;
, а надо
C++
1
cout << a;
в первом цикле.
1
Вложения
Тип файла: txt croco.txt (1.1 Кб, 3 просмотров)
LifeMoroz
11 / 11 / 3
Регистрация: 12.10.2013
Сообщений: 54
25.06.2014, 15:04 #30
Переписал считывание:
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
int main(int argc, char* argv[]){
    ofstream F("input.txt");
    F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*\n";
    F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*\n";
    F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-\n";
    F << "You are in the big room.\nAt centre of the room is swimming pool.\n   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 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 << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*\n";
    F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*\n";
    F << "*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*---*-";
    F.close();
    ifstream iF("input.txt");
    char a[256];
    while(!iF.eof()) {
        iF.getline(a, 256);
        cout << a << endl;
    }
return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 15:04
Привет! Вот еще темы с ответами:

Чтение из файла - C++
Извините, опять этот вопрос, но почему не работает программа? Нужно считать из файла цифры и записать их в матрицу и поменять минимальные и...

Чтение из файла - C++
Не знаю как нормально организовать чтение чисел из файла (числа в файле расположены через запятую) пример файла: 14,79,..,4 ...

Чтение из файла - C++
Привет, народ, объясните, пожалуйста, в чем дело: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main(void) ...

Чтение из файла - C++
задание: помогите с 3 заданием!!! как можно сделать что бы программа считывала файл auto.txt и распределяла данные по классам, ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.06.2014, 15:04
Ответ Создать тему
Опции темы

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