Затруднение при обработке строк

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
GoogTimes
Сообщения: 6
Зарегистрирован: 09 янв 2010, 15:44

Здравствуйте, уважаемые форумчане, делал себе програмку для личных нужд, все хорошо получалось, но возникла трудность, которую не смог решить, суть проста до безобразия: строка, где встречается искомая комбинация должна быть просто вырезана со всем ее содержимым.

(имеем что-то типа:

просто строка
блаблабла*искомая комбинация*блаблабла
просто строка

надо получить:

просто строка
простро строка )

Код: Выделить всё

FILE *pF1 = fopen ("input.txt", "rb");
  if ( pF1 )
  {
    FILE *pF2 = fopen("output.txt", "wt");
    if ( pF2 )
    {
      char BuferFrom[1024];
      char BuferTo[1024];
      char StrFind[] = "COMMAND: svchost.exe -i ";  //ИСКОМАЯ КОМБИНАЦ.  
      char StrSwap[] = ""; //ТУТ ВСЯ ЗАГВОЗДКА
      int CurBufToIndex;
      int SwapLen = strlen(StrSwap);
      while ( fgets(BuferFrom, 1023, pF1) )
      {
        CurBufToIndex = 0;
        for (int n = 0; n < 1024 && BuferFrom[n] != '\0'; n++)
          if ( BuferFrom[n] != StrFind[0]  || !IsItFindStr(&BuferFrom[n], StrFind) )
            BuferTo[CurBufToIndex++] = BuferFrom[n];
          else
          {
            for (int m = 0; m < SwapLen; m++)
              BuferTo[CurBufToIndex++] = StrSwap[m];
            n += (strlen(StrFind)-1);
          }
        BuferTo[CurBufToIndex-2] = '\n';
        BuferTo[CurBufToIndex-1] = '\0';
        fputs(BuferTo, pF2);
      }
      fclose (pF2);
    }
    fclose (pF1);
  }
заранее благодарю откликнувшихся за помощ.
Dragon
Сообщения: 99
Зарегистрирован: 01 окт 2009, 11:21
Откуда: Odessa
Контактная информация:

А string использовать можно?
Записываешь в string искомую комбинацию. Считываешь в другой string по-строчно файл и сравниваешь оба стринга. А дальше в хависимости от результатов - совпали или нет решаешь, что делать.
Meteo
Сообщения: 20
Зарегистрирован: 07 май 2010, 21:54

Код: Выделить всё

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

main(void)
{
          char str1[50],str2[50];
          char *pm=str1,*pm1;
          printf("vvedite stroku-predlogenie");
          gets(str1);
          printf("vvedite stroku dla poisca");
          gets(str2); 
          pm1=strstr(str1,str2);
          if(pm1==NULL)
          {
            printf("str << %s >>,not find in << %s >>",str2,pm);
            exit(1);
          }
            
              while(*pm!='\0')
              { 
                 if(pm!=pm1)
                 {
                  printf("%c",*pm);
                  pm++;
                  }
                   else
                   pm+=strlen(str2);
                }    
                              getchar();
                              getchar();
}
удаление определенной части предложения....
BulldozerBSG
Сообщения: 270
Зарегистрирован: 09 янв 2010, 04:14
Контактная информация:

Код: Выделить всё

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define SIZE_BUFF 1024

int main(int agrc, char * argv[])
{
	FILE * fi = fopen("in.txt","r");
	FILE * fo = fopen("out.txt", "w");
	char * buff = malloc(SIZE_BUFF);
	if (fi && fo)
	{
		while(fgets(buff, SIZE_BUFF, fi))
		{
			if(!strstr(buff, "test"))
			{
				fputs(buff, fo);
			}
		}
	}
	free(buff);
	fclose(fo);
	fclose(fi);
	return EXIT_SUCCESS;
}
GoogTimes
Сообщения: 6
Зарегистрирован: 09 янв 2010, 15:44

Ура, благодарю всех за помощ, узнал все, что надо, и даже больше, еще раз всем огромное спасибо! :)
Ответить