Консультация № 161838
02.03.2009, 18:01
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты Помогите пожалуйста с задачей на С (си): через файл открыть текст и удвоить в тексте каждую литеру. В приложении прикрепляю файл такой же уже решённой задачи, но на ЯП Pascal (не знаю, может чем-то это поможет). Заранее благодарен

Приложение:
uses crt;
const lt=[65..90,97..122,168,184,192..255];{коды букв по ANSI}
var f,g:text;{2 текстовых файла}
s:string;{строка}
i:byte;{счетчик цикла}
begin
clrscr;
assign(f,'text1.txt');{связываем переменную с существующим файлом}
reset(f);{открываем для чтения}
assign(g,'text2.txt');{создаем новый файл}
rewrite(g);{открываем для записи}
while not eof(f) do{пока не конец файла}
begin
readln(f,s);{читаем построчно}
i:=1;
while i<=length(s) do{идем по строке}
begin
if ord(s[i]) in lt then insert(s[i],s,i+1);{если литера, вставляем еще одну такую же}
inc(i,2);{увеличиваем счетчик на 2}
end;
writeln(g,s);{записываем строку в новый файл}
end;
close(f);{закрываем оба файла}
close(g);
readln
end.

Обсуждение

Неизвестный
03.03.2009, 09:54
общий
это ответ
Здравствуйте, Kolyablinov!
Смотрите, проверяйте. В "Microsoft Visual Studio 2008" компилируется без ошибок.

Приложение:
#include "stdafx.h"
#include <iostream>
#include <STDIO.H>
using namespace std;

void main()
{
//2 текстовых файла
FILE* srcFile = fopen( "text1.txt", "r" ); //открываем для чтения
FILE* dstFile = fopen( "text2.txt", "w+" ); //открываем для записи
if( !srcFile )// не удалось открыть text1.txt
{
cout << "error open text1.txt" << endl;
system("pause");
return;
}
if( !dstFile )// не удалось открыть text2.txt
{
cout << "error open text2.txt" << endl;
system("pause");
return;
}

unsigned char buf;
while( !feof( srcFile ) )// пока не конец файла
{
// считываем по одному байту
if( fread( &buf, 1, 1, srcFile ) > 0 )
{
fwrite( &buf, 1, 1, dstFile );
// если литера, вставляем еще одну такую же
if( ( buf > 64 && buf < 91 ) ||
( buf > 96 && buf < 121 ) ||
( buf > 191 && buf < 254 ) ||
buf == 168 || buf == 184 )
fwrite( &buf, 1, 1, dstFile );
}
}

//закрываем оба файла
fclose(srcFile);
fclose(dstFile);

//пауза
system("pause");
}
Форма ответа