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

Удаление слова из текста - C++

Восстановить пароль Регистрация
 
Ilnurvampire
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 18
25.04.2013, 13:23     Удаление слова из текста #1
Даны текстовый файл и слово. Напечатать те строки файла, которые содержат данное слово без этого слова.
Написал прогу которая удаляет из строки лишь первое вхождение слова. Как сделать, чтобы она удаляла слово, если оно в строке встречается несколько раз.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <vector>
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
    char slovo[50];
    
   FILE * pFile;
   FILE *pFile2;
   char buffer [100];
   char a[50][30]; 
   int len,j=0, k=0;
   int count=0;
   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else
   {
     while ( ! feof (pFile) )
     {
       if ( fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
       fputs (buffer , stdout);
       }
     fclose (pFile);
   }
   cout<<"\nВведите слово для поиска : ";
   cin>>slovo;
   pFile = fopen ("myfile.txt" , "r");
   pFile2=fopen("myfile2.txt","w");
   if (pFile == NULL) perror ("Error opening file");
   else
   {
     while ( ! feof (pFile) )
     {
       if ( fgets (buffer , sizeof(buffer) , pFile) == NULL ) break;
       
       len=strlen(buffer);
       for (int i=0; i<len; i++)
       {
           if(buffer[i]!=' ' && buffer[i]!=',' && buffer[i]!='.'    && buffer[i]!='\n')
           {
               a[j][k]=buffer[i];
               k++;
           }
             else
             {
                  if (k!=0)
               {
            a[j][k]='\0';
            j++;
            k=0;
               }
             }
       }
       for (int l=0; l<j;l++)
   {
       if (strcmp(a[l],slovo)==0) 
       {
           fputs(buffer,pFile2);
           count++;
       break;
   }
   }
       j=0;
       }
     fclose (pFile);
     fclose(pFile2);
   }
   string stroka;
   string slovo_str;
   slovo_str.assign(slovo);
   int found;
   pFile2=fopen("myfile2.txt","r");
   if (pFile2 == NULL) perror ("Error opening file");
   else
   {
     while ( ! feof (pFile2) )
     {
       if ( fgets (buffer , sizeof(buffer) , pFile2) == NULL ) break;
     { 
      stroka.assign(buffer);//конвертирование char в string
      found=stroka.find(slovo_str);
      stroka.erase(found,slovo_str.length());
      cout<<stroka;
     }
       }
     fclose (pFile2);
   }
   if (count==0) cout<<"Данное слово в тексте не найдено";
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 13:23     Удаление слова из текста
Посмотрите здесь:

Напечатать все слова из текста, отличные от слова hello. C++
C++ С клавиатуры вводится многострочный текст. Распечатать слова из текста, преобразовав их следующим образом: · перенести последнюю букву в начало слова;
Удаление слова C++
C++ Удаление слов из текста
C++ Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию
Задан текст, напечатать слова этого текста отличные от последнего слова C++
Дана строка текста, в которой слова разделены пробелами и запятыми, вывести повторяющиеся слова C++
C++ Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru