Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Поиск и замена символа


Автор: Strob 27.5.2005, 05:28
Помогите пожалуйста как можно реализовать на Visual C++ 6.0 мне нужно в *.txt файле отыскать сымвол (" | ") во всех строках и заменить его на (" * ")

Автор: jorkug 27.5.2005, 05:49
Примерно так:
Код

fpos_t tempPos = 0;
FILE* f = fopen("name.txt", "w");
for(char c = 'n';!feof(f);fscanf(f, "%c", &c), tempPos++)
{
   if(c == '|')
   {
      tempPos--;
      setpos(f, &tempPos);
      fprintf(f, "%c", '*');
   }
}
fclose(f);

Автор: gepard 27.5.2005, 06:32
А ещё можно считывать по одной строке и разбирать каждую из них.

Автор: Mayk 27.5.2005, 06:44
А я бы делал примерно так, ибо гораздо быстрее:
(разумеется, добавить обработку ошибок не помешает)

Код

     //ранее FILE* f = fopen("input.txt","r+"); 
    const int BufSize = 1024;  //размер буфера искл. \0
    char buf[BufSize+1]; //буфер
    int bytesRead=0; //кол-во прочитанных байт
    char*p; //указатель внутри буфера для поиска

    while((bytesRead=fread(buf, 1, BufSize,f)) > 0) {
        buf[bytesRead]=0; //добиваем нулем
        //поиск и замена. 
        p=buf;
        while(p=strchr(p,'|'))
            *p++='*';
        //запись
        fseek(f, -bytesRead, SEEK_CUR);
        fwrite(buf,bytesRead,1,f);
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)