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

Черезстрочное слияние - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск с консоли http://www.cyberforum.ru/cpp-beginners/thread53422.html
вот решил прогу писать,которая ищет на компе все файлы с расширением doc,и все в них удаляет и добавляет звездочки...я только не знаю эту функцию поиска,помогите пожалуйста,надо найти все файлы,и...
C++ Насчёт функции memcpy() Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое size_t ? И вообще,зачем указателям тип воид? Они что,что-то... http://www.cyberforum.ru/cpp-beginners/thread53416.html
C++ Ввести три числа и проверить, возможно ли из них составить арифметическую прогрессию
ввести три числа и проверить возможно ли с них составить арифметическую прогрессию
Передача параметров по ссылке C++
У кого есть рабочий вариант сего чуда ? (К примеру,функции квадратного корня).В учебнике не работает.
C++ Присвоение типов в С++ http://www.cyberforum.ru/cpp-beginners/thread53379.html
Как присвоить елементам массива mas_a елементы строки String.Массив имеет тип int,а String char?
C++ Вопрос по выносу кода в отдельный файл Вот если писать в С программу, очень много когда можно запутаться ... Можно ли как то вынести часть кода в файл. (именно файл, база не нужна) Например если есть большой массив, можно ли его... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
09.10.2009, 15:00
Код C++
1
2
3
4
5
6
7
while (c=fgetc(f1)) { fputc(c,o); if (c==EOF) fputc('\n',o); if (c=='\n') break;
};

Как окончательный вариант предлагаю такое решение.
Разберись в нём и протестируй.
Раз за разом мы будем в цикле считывать символы и их печатать, ни о чем не боеспокоясь.
Пока нам не встретится EOF или \n

Допустим, нам встретился EOF
То есть последней строкой в файле была такая строка :
asdfgh"EOF"

asdfgh нами считано. И надо добавить в конес строки \n (хотя его там нет, надо самим пихать.)

Вот пихаем. Пишем
Код C++
1
2
3
if (c==EOF) fputc('\n',o);

И всё на этом. Теперь мы уже НИКОГДА не зайдём в это цикл, согласись?
А если считаем знак \n, то просто тупо запишем его в файл и всё, по команде break выходим на хрен из цикла.
И так для обоих файлов.

Но тут есть одно.
Если будет, допустим, так

asdfg\nEOF
Значит, произойдёт так:
Считается строка, потом \n. Вроде всё нормально. Теперь бы нам выйти их цикла, ан нет. Прога опять зайдёт в цикл, сразу же наткнётся на EOF и прибавит \n, который нам даром не нужен. Получается в конце два \n

Значит что?
Значит, если в конце EOF, то пусть символ \n прописывается не безусловно, а только в том случае, если предыдущий прописанный сивол НЕ БЫЛ \n

То есть вот сюда
C++
1
2
if (c==EOF// Вот сюда)
   fputc('\n',o);
Надо написать такое условие, словами если:
Если предыдущий считанный символ не был \n
Вот подумай, как это реализоватью.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru