Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам, всё собранное уйдет либо на оплату сервера, либо модераторам на шоколадки

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 07.12.2018, 09:12   #1
and0
 
Регистрация: 28.11.2018
Сообщений: 7
Репутация: 10
По умолчанию С++ Создать текстовый файл f, состоящий из 2-3 строк текста произвольной длины. Перезаписать содержание файла f в файл h, так, чтобы в файле h все строки были по 20 символов

Задание - Создать текстовый файл f, состоящий из 2-3 строк текста произвольной длины. Перезаписать содержание файла f в файл h, так, чтобы в файле h все строки были по 20 символов (кроме последней) и в начале каждой строки стоял ее номер.

Не получается записать массив из строки посимвольно, для переноса на новую строку, записывается по словам

Код:

#include <iostream>
#include <fstream>
using namespace std;
int main(){
	char c[20];
	char ch;
	int i=0;
	ifstream f ("f");

	while (! f.eof()){
		f>>c;
		i++;
		cout<<c<<" ";
		if (i==20){
			cout<<'\n';
			i=0;
		}
}
}

and0 вне форума   Ответить с цитированием
Старый 07.12.2018, 13:16   #2
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,469
Репутация: 513
По умолчанию

На ++ не пишу, но чисто по логике: считывать строку, определять ее длину и добавлять строку из (20-strlen) пробелов. Запрета на использование строковых функций ведь нет ?
Вопрос знатокам ++ : раэве в С++ strncpy, как в С, нет? Что-то я не нашел в описаниях.

Последний раз редактировалось digitalis; 07.12.2018 в 13:35.
digitalis вне форума   Ответить с цитированием
Старый 07.12.2018, 15:02   #3
and0
 
Регистрация: 28.11.2018
Сообщений: 7
Репутация: 10
По умолчанию

Нет, запрета нет, но проблема в том что нужно как- то определить эти 20 символов
and0 вне форума   Ответить с цитированием
Старый 07.12.2018, 15:10   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,128
Репутация: 2428
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Вопрос знатокам ++ : раэве в С++ strncpy, как в С, нет? Что-то я не нашел в описаниях.
Та, ладно https://en.cppreference.com/w/cpp/string/byte/strncpy

Цитата:
Сообщение от and0 Посмотреть сообщение
но проблема в том что нужно как- то определить эти 20 символов
А какие с этим проблемы?

Цитата:
Сообщение от and0 Посмотреть сообщение
Не получается записать массив из строки посимвольно, для переноса на новую строку, записывается по словам
Так выводите не сразу с, а посимольно с[j]
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 08.12.2018, 11:33   #5
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,469
Репутация: 513
По умолчанию

Цитата:
Сообщение от and0 Посмотреть сообщение
Нет, запрета нет, но проблема в том что нужно как- то определить эти 20 символов
А че тут определять: нехватает - добавить пробелами, лишние - обрезать по самые эти самые до 20.
digitalis вне форума   Ответить с цитированием
Старый 12.12.2018, 13:38   #6
and0
 
Регистрация: 28.11.2018
Сообщений: 7
Репутация: 10
По умолчанию

у меня почти получилось, но проблема с выводом "всего происходящего" не в консоль а в файл
Код:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
	char c[20];
	int i=0;
	int s=1;
	ifstream f ("f");
	string std;
	cout<<s<<" ";
	while (! f.eof()){
		f>>c[i];
		cout<<c[i];
		i++;
		if (i==20){
		cout<<"\n";
		i=0;
		s++;
		}if (i==0){
			cout<<s<<" ";
		}

}
}


Последний раз редактировалось and0; 12.12.2018 в 14:17.
and0 вне форума   Ответить с цитированием
Старый 12.12.2018, 14:05   #7
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,128
Репутация: 2428
По умолчанию

Так замените cout на ofstream какой-нибудь.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x на форуме   Ответить с цитированием
Старый 12.12.2018, 14:18   #8
and0
 
Регистрация: 28.11.2018
Сообщений: 7
Репутация: 10
По умолчанию

все работает
спасибо
Код:


#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
	int i=0;
	char c[20];
	int s=1;
	ifstream f ("f");
	ofstream ff ("fp");
	string std;
	// cout<<s<<" ";
	ff<<s<<" ";
	while (! f.eof()){
		f>>c[i];
		// cout<<c[i];
		ff<<c[i];
		i++;
		if (i==20){
		// cout<<"\n";
		ff<<"\n";
		i=0;
		s++;
		}if (i==0){
			// cout<<s<<" ";
			ff<<s<<" ";
		}

}
}

но он не учитывает пробелы и нужно разделать слова символами без пробелов

Последний раз редактировалось and0; 12.12.2018 в 14:22.
and0 вне форума   Ответить с цитированием
Старый 12.12.2018, 20:04   #9
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Адрес: DS:SI
Сообщений: 117
Репутация: 256
По умолчанию

Что если вместо f>>c[i]; попробовать f.get(c[i]); Только надо будет отловить '\n'
jillitil вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль(файлы). Дан текстовый файл f. Вывести все строки файла длина которых больше 30 символов. Артемdgty Помощь студентам 0 09.10.2013 00:37
Организовать текстовый файл, состоящий из N строк. Заменить в файле все маленькие латинские буквы на большие. gudok2 Паскаль 8 19.05.2013 11:52
Организовать текстовый файл f, состоящий из N строк. Организовать замену символов в файле. "Старый" символ и "новый" символ запраш Richik123 Паскаль 1 14.06.2012 16:28
Организовать текстовый файл f, состоящий из N строк. Организовать замену символов в файле. "Старый" символ и "новый" символ запра Richik123 Паскаль 0 31.05.2012 17:32


22:12.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru