Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с файлом
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Ирин
С помощью текстового редактора создать файл, содержащий текст, длина кото¬рого не пре-вышает 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;  //ўлў(r)¤Ёв бва(r)ЄЁ
}

  cout<<"\n‚ўҐ¤ЁвҐ б«(r)ў(r) Є(r)в(r)а(r)Ґ ­ е(r)¤Ёвмбп ў д (c)«Ґ";
  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<<"„«п ўле(r)¤  Єг¤л ­Ёвм вЄ­ЁвҐ";
 cout<<endl;
 getche();
}



помогите доделать в программе не выделяеться слово(
volvo
Хочешь - попробуй перевести с Паскаля (хотя я сомневаюсь, уж очень специфическая в Паскале работа со строками...) Задание - практически один к одному, нужно слово выделять не кавычками, а цветом.
чтение файла, выделение слов
Ирин
Цитата(volvo @ 14.05.2006 22:35) *

Хочешь - попробуй перевести с Паскаля (хотя я сомневаюсь, уж очень специфическая в Паскале работа со строками...) Задание - практически один к одному, нужно слово выделять не кавычками, а цветом.
чтение файла, выделение слов


нет в паскале у меня тоже есть... но проблема возникает именно в функции sinsert ты не можешь помочь хотя бы сказать как выделить слово в кавычки в Си?
volvo
Ничем помочь не могу - sinsert не является стандартной функцией C/C++, так что я понятия не имею, что именно там делается...

А вся твоя программа завязана на использовании этой самой sinsert
Merlin
Volvo вот здесь есть эта функция sinsert

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

#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;
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.