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

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

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

Чтение строки из файла - C++

24.10.2013, 19:38. Просмотров 559. Ответов 16
Метки нет (Все метки)

Задание:
Считать из входного файла строку символов; переписать ее в выходной файл
Проблема такая:
В входном документе прописал
Я выполнил третье задание.

Долго думал, однако получилось.
В выходном файле печататется все без пробелов, к тому же заполняется все буквами М, т.е.
Явыполнилтретьезадание.Долгодумал,однакополучилось.МММММММММММММММММММММММММММММММММММММММММММММММММ
Код программы:
Код
#include <iostream>
#include "fstream"
using namespace std;
int main ()
{
	char a[100];
	int i;
	ifstream in("stroka.txt");
	ofstream out("outstroka.txt");
	for (i=0; i<100; i++)
			in >> a[i];
			if (a[i]!='\n')
				{
				for(i=0; i<100; i++)
			    out << a[i];
			}
	



	return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение строки из файла (C++):

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

Чтение строки из файла - C++
В файле находится несколько строк, а программа после обработки первой заканчивает свою работу, в чем дело? #include &quot;StdAfx.h&quot; ...

Чтение строки из файла - C++
Как прочитать все\одну определенную строку из файла и например сравнить с введенной строкой?

Чтение строки из файла - C++
помогите пожалуйста. как прочесть всю строку из файла?

Чтение из файла и строки - C++
Всем привет, у меня есть проблема со строками и чтением из файла. Предположим в файле 6 строк: What? A Who? B Why? C Нужно...

Чтение строки из файла - C++
Как из вводного файла прочитать строку и присвоить её переменной? Заранее спасибо!:)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 19:51 #2
Есть методы строкового чтения, например, getline().
Оксана 1234
4 / 4 / 0
Регистрация: 10.04.2013
Сообщений: 171
24.10.2013, 19:52 #3
Цитата Сообщение от icanfly_bd Посмотреть сообщение
out << a[i];
я думаю правильнее будет out << a[i]<<' ';
icanfly_bd
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 19
24.10.2013, 19:53  [ТС] #4
Цитата Сообщение от alsav22 Посмотреть сообщение
Есть методы строкового чтения, например, getline().
не подходит ;( нужно использовать только изученные коды. В принципе, я здесь все использовал. Только доделать не могу
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 19:57 #5
Цитата Сообщение от icanfly_bd Посмотреть сообщение
нужно использовать только изученные коды.
И что изучили?

Добавлено через 1 минуту
И вот так не пишите:
Цитата Сообщение от icanfly_bd Посмотреть сообщение
#include "fstream"
В кавычках пишут пользовательские файлы.

Добавлено через 1 минуту
Файл на открытие для чтения всегда проверять нужно (в дргой теме уже писал вам об этом).
icanfly_bd
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 19
24.10.2013, 20:02  [ТС] #6
Цитата Сообщение от Оксана 1234 Посмотреть сообщение
я думаю правильнее будет out << a[i]<<' ';
мне не нужно выводить массив в командную строку, а нужно выводить в файл.
Цитата Сообщение от alsav22 Посмотреть сообщение
И что изучили?

Добавлено через 1 минуту
И вот так не пишите:

В кавычках пишут пользовательские файлы.
так преподаватель объяснял. Если не ошибаюсь, то альтернативная запись
#include <fstream.h> я прав?

Цитата Originally Posted by icanfly_bd View Post
нужно использовать только изученные коды.
И что изучили?
ofstream; ifstream; in; out; in.close
Это все коды по файлам.
justDo
8 / 8 / 2
Регистрация: 06.10.2013
Сообщений: 19
24.10.2013, 20:03 #7
Цитата Сообщение от icanfly_bd Посмотреть сообщение
к тому же заполняется все буквами М
это из-за того, что у вас размерность массива больше, чем количество данных. инициализируйте массив нулями
C++
1
2
3
4
5
6
....
const short size = 100;
    char a[size];
    for(int i = 0; i < size; ++i)
        a[i] = '\0';
....
icanfly_bd
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 19
24.10.2013, 20:20  [ТС] #8
Цитата Сообщение от justDo Посмотреть сообщение
это из-за того, что у вас размерность массива больше, чем количество данных. инициализируйте массив нулями
C++
1
2
3
4
5
6
....
const short size = 100;
    char a[size];
    for(int i = 0; i < size; ++i)
        a[i] = '\0';
....
Благодарю, сработало. Но мне нужно выводить лишь одну строку - первую. Вторую ввел специально, чтобы проверить программу. К тому же записывание проводится также без пробелов.

Добавлено через 11 минут
Цитата Сообщение от Оксана 1234 Посмотреть сообщение
я думаю правильнее будет out << a[i]<<' ';
добавляется пробел после каждого символа, а надо после каждого слова
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 20:20 #9
Цитата Сообщение от icanfly_bd Посмотреть сообщение
#include <fstream.h> я прав?
Это С. В С++ <fstream>
justDo
8 / 8 / 2
Регистрация: 06.10.2013
Сообщений: 19
24.10.2013, 20:21 #10
Цитата Сообщение от icanfly_bd Посмотреть сообщение
К тому же записывание проводится также без пробелов.
ну я не говорил, что это избавит от другой проблемы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
using namespace std;
 
int main ()
{
    ifstream in("stroka.txt");
    ofstream out("outstroka.txt");
 
    char c = '\0';
    while(in.get(c))
    {
        if(c == '\n')
            break;
        out << c;
    }
    
    return 0;
}
не забудьте проверку на пустой файл и тому подобное
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.10.2013, 20:23 #11
Цитата Сообщение от icanfly_bd Посмотреть сообщение
ofstream; ifstream; in; out; in.close
Это все коды по файлам.
В ifstream есть метод для чтения строк, назывется getline(): http://www.cplusplus.com/reference/i...tream/getline/
А это всё извращения.
justDo
8 / 8 / 2
Регистрация: 06.10.2013
Сообщений: 19
24.10.2013, 20:27 #12
Цитата Сообщение от alsav22 Посмотреть сообщение
А это всё извращения.
вообще, это полезно знать.
тем более, я так понимаю человек в университете изучает язык, там могут преподаватели ставить ограничения на используемые функции.
icanfly_bd
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 19
24.10.2013, 20:34  [ТС] #13
Цитата Сообщение от justDo Посмотреть сообщение
ну я не говорил, что это избавит от другой проблемы

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
using namespace std;
 
int main ()
{
    ifstream in("stroka.txt");
    ofstream out("outstroka.txt");
 
    char c = '\0';
    while(in.get(c))
    {
        if(c == '\n')
            break;
        out << c;
    }
    
    return 0;
}
не забудьте проверку на пустой файл и тому подобное
Спасибо, работает. Объясните, пожалуйста, если не трудно, что значит условие in.get(c)
и про проверки, что Вы имели в виду? Создать пустой файл и проверить его? или что?
alsav22
24.10.2013, 20:36
  #14

Не по теме:

Цитата Сообщение от justDo Посмотреть сообщение
вообще, это полезно знать
Это - что?

justDo
8 / 8 / 2
Регистрация: 06.10.2013
Сообщений: 19
24.10.2013, 20:58 #15
Цитата Сообщение от icanfly_bd Посмотреть сообщение
in.get(c)
считывает по символу из файла. и если возвращаемое значение != NULL, то выполняется тело цикла
Цитата Сообщение от icanfly_bd Посмотреть сообщение
и про проверки, что Вы имели в виду?
я имел ввиду добавить в коде проверку на существование файла, есть ли в нем данные. вывод соответствующих сообщений об ошибках.
хотя не знаю нужно ли это вам. просто я привык делать это.

Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Это - что?
я имел ввиду такие простые вещи, которые могут помочь понять как работают другие более сложные вещи

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 20:58
Привет! Вот еще темы с ответами:

Чтение строки из файла - C++
Помогите пожалйста считать строку из файла #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;fstream&quot; #include...

Чтение строки из файла - C++
Добрый День! Необходимо считать из файла в стуктуру: 4 Sam forn 2000 Freida Flass 100500 Tammy Tubbs 5000 Rich...

Чтение строки и файла - C++
Программа для чтения строки и записи файла, пожалуйста помоите модуль сдать нужно

Чтение строки из файла - C++
как считать строку(-и) из файла без стринга? по заданию у меня выводит кол-во слов с одинаковыми первой и последними буквами(символами) ...


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

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

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