Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[C++] работа с текстовым файлом

12K
28 ноября 2006 года
mortar89
25 / / 17.11.2006
Люди добрые, помогите мне лабу сдать, просто срочно надо....вот задание было:составить программу которая читает текстовый файл и выполняет его преобразование, во всем тексте все появления слова колбаса, заменить на 'колбаса'.(ПРимечание, программу следует разрабатывать, исходя из предположения, что весь текст из файла не может быть размещен в оперативной памяти).
Вот что я тут пытался:
Код:
#include <stdio.h>
#include <conio.h>
int main(){
char obr[]="'колбаса'";
char word[100];
int h;
FILE *fopen(const char *fname, const char *mode);

FILE *fp;
if((fp=fopen("test", "rb+")) == NULL){
  printf("Cant open file\n");
  exit(1);   }

while(word==obr)
{h=word;
word=obr;
obr=h;
putc(h, fp);
}

  fclose(fp);
   getch{};
   return 0;
  }
63
28 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
Если исходить из предположения, что заменять надо все слова начинающиеся на "колбас" или "Колбас", то считывать все лексемы из файла и анализировать, если она подлежит замене - заменять, и тут же выбрасывать в выходной файл.
9.5K
29 ноября 2006 года
ROLpogo
80 / / 22.08.2006
Код:
#include "conio.h"
#include "string.h"
#include "stdio.h"

bool IsItFindStr(char* StrFrom, char* StrFind)
{
  int StrFindLen = strlen(StrFind);
  for (int i = 0; i < StrFindLen; i++)
    if ( StrFrom != StrFind )
      return false;
  return true;
}

void main(void)
{
  FILE *pF1 = fopen ("C:\\MyFile.txt", "rb");
  if ( pF1 )
  {
    FILE *pF2 = fopen("C:\\MyFile.tmp", "wt");
    if ( pF2 )
    {
      char BuferFrom[1024];
      char BuferTo[1024];
      char StrFind[] = "колбаса";
      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);
  }
  getch(); 
}


Программа создаёт 2-й файл. Если нужно оставить один файл, можно удалить исходный и переименовать новый :)
12K
29 ноября 2006 года
mortar89
25 / / 17.11.2006
Спасибо большое, но у меня почему то компилируется, но не преобразовывает файл :(
9.5K
29 ноября 2006 года
ROLpogo
80 / / 22.08.2006
Я же написал, что исходный файл программа не изменяет, а создаёт ещё один файл с тем же именем, но с расширением tmp.
12K
29 ноября 2006 года
mortar89
25 / / 17.11.2006
Цитата: ROLpogo
Я же написал, что исходный файл программа не изменяет, а создаёт ещё один файл с тем же именем, но с расширением tmp.



Все разобрался :) спасибо еще раз!

41K
04 марта 2009 года
jorjik
2 / / 17.07.2008
ROLpogo, используя ваш код получил:

Undefined symbol 'StrFrom'

Поможете разобраться ?
9.5K
04 марта 2009 года
ROLpogo
80 / / 22.08.2006
Цитата: jorjik
ROLpogo, используя ваш код получил:

Undefined symbol 'StrFrom'

Поможете разобраться ?



Сложно сказать. Может вместо англ. буквы o в слове From стоит русская?

41K
05 марта 2009 года
jorjik
2 / / 17.07.2008
ROLpogo, написано нормально, действительно а где обьявляется StrFrom ? В вашем коде этого не видно.
9.5K
06 марта 2009 года
ROLpogo
80 / / 22.08.2006
Цитата: jorjik
ROLpogo, написано нормально, действительно а где обьявляется StrFrom ? В вашем коде этого не видно.



Это параметр функции:

 
Код:
bool IsItFindStr(char* StrFrom, char* StrFind)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог