Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Работа с файлом

Автор: Ирин 15.05.2006 0:55

С помощью текстового редактора создать файл, содержащий текст, длина кото¬рого не пре-вышает 700 символов (длина строки текста не должна превышать 70 символов).
Имя файла должно иметь расширение DAT. Написать программу, которая:
- выводит исходный текст на экран дисплея;
- выводит текст на экран дисплея еще раз, заключая заданное слово в кавычки (заданное слово вводить с клавиатуры);

 
#include <fstream.h>
#include <iostream.h>
#include <conio.h>;
#include <string.h>;
#include "strlib.cpp";
//using namespace std;

void main()
{
// const int Max=1000;
char* s;
ifstream infile("Test.txt");
while (!infile.eof())
{
infile.getline(s, 80);
cout<<s<<endl; //ўлў®¤Ёв бва®ЄЁ
}

cout<<"\n‚ўҐ¤ЁвҐ б«®ў® Є®в®а®Ґ ­ 室Ёвмбп ў д ©«Ґ";
char *word;
cin>>word;

while (!infile.eof() )
{
infile.getline(s,80);
int i;
i=spos(word,s);
if (i!=0)
{
sinsert(" " " ",s,spos(word,s));
sinsert(" " " ",s,spos(word,s) + slength(word));

}
cout<<s<<endl;
}
cout<<"„«п ўл室 Єг¤л ­Ёвм вЄ­ЁвҐ";
cout<<endl;
getche();
}



помогите доделать в программе не выделяеться слово(

Автор: volvo 15.05.2006 1:35

Хочешь - попробуй перевести с Паскаля (хотя я сомневаюсь, уж очень специфическая в Паскале работа со строками...) Задание - практически один к одному, нужно слово выделять не кавычками, а цветом.
http://forum.pascal.net.ru/index.php?s=&showtopic=7259&view=findpost&p=52286

Автор: Ирин 15.05.2006 2:15

Цитата(volvo @ 14.05.2006 22:35) *

Хочешь - попробуй перевести с Паскаля (хотя я сомневаюсь, уж очень специфическая в Паскале работа со строками...) Задание - практически один к одному, нужно слово выделять не кавычками, а цветом.
http://forum.pascal.net.ru/index.php?s=&showtopic=7259&view=findpost&p=52286


нет в паскале у меня тоже есть... но проблема возникает именно в функции sinsert ты не можешь помочь хотя бы сказать как выделить слово в кавычки в Си?

Автор: volvo 15.05.2006 4:30

Ничем помочь не могу - sinsert не является стандартной функцией C/C++, так что я понятия не имею, что именно там делается...

А вся твоя программа завязана на использовании этой самой sinsert

Автор: Merlin 15.05.2006 5:21

Volvo вот здесь есть эта функция sinsert

Жаль сам не могу помочь решить задачу, так как плохо разбираюсь в этом.


Прикрепленные файлы
Прикрепленный файл  STRLIB_.txt ( 1.18 килобайт ) Кол-во скачиваний: 272

Автор: volvo 15.05.2006 18:00

Ирин, у тебя в программе немного неправильно использовались указатели на строку (память под саму строку не выделялась)... Я подправил кое-что, сейчас программа работает (правда, частично: если в одной строке есть несколько введенных слов, то кавычками выделяется только первое из них). Смотри комментарии...

#include <fstream.h>
#include <iostream.h>
#include <conio.h>;
#include <string.h>;
#include "strlib.cpp";
// using namespace std;

int main() {

char s[71]; // Чтобы не заморачиваться с new

ifstream infile("Text700.txt");
while (!infile.eof()) {
infile.getline(s, 80);
cout << s << endl;
}

cout << "Введите слово: ";
char word[50]; // Аналогично, выделяем память статически
cin >> word;


infile.seekg(0, ios::beg); // !!! Ты дошла до конца файла, указатель надо сбросить на начало
infile.clear(); // Точно так же надо сбросить все флаги ошибок файла

while(!infile.eof()) {

infile.getline(s, 80);
if(spos(word,s) > 0) {
strcpy(s, sinsert("\"", s, spos(word, s))); // используется возвращаемое значение функции !!!
strcpy(s, sinsert("\"", s, spos(word,s) + slength(word)));
}
cout << s << endl;
}

cout << "Press any key" << endl;
getche();
return 0;
}