Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (03.02.2007 в 12:25)
Если в файлах ничего кроме этих записей не будет, можно поступить следующим образом
#include <iostream>
#include <string>
#include <stdio>
using namespace std;

int main()
{

  const int LENGTH = 10000;
  int pos = 0;
  char str[LENGTH];
  string name, family, temp;

  FILE *fp;
  // Читаем файл file2 c именем
  if((fp = fopen("file2.txt""r")) == NULL)
  {
    cout << "Невозможно открыть файл: " << ferror(fp) <<  "\n";
    return 1;
  }
  while(!feof(fp))
  {
    fgets(str, LENGTH, fp);
    if(!strncmp(str,"<Name>",6))   name = str;
    if(!strncmp(str,"<Family>",8)) family = str;
  }

  // Очищаем name от тэгов <Name></Name>
  if(name.size())
  {
    pos = name.find("<Name>");
    if(pos >= 0) name = name.replace(pos,6,"");
    pos = name.rfind("</Name>");
    if(pos >= 0) name = name.replace(pos, name.size() - pos,"");
  }

  // Очищаем family от тэгов <Family></Family>
  if(family.size())
  {
    pos = family.find("<Family>");
    if(pos >= 0) family = family.replace(pos,8,"");
    pos = family.rfind("</Family>");
    if(pos >= 0) family = family.replace(pos, family.size() - pos,"");
  }

  // Закрываем файл
  fclose(fp);

  // Читаем файл file1 c текстом
  if((fp = fopen("file1.txt""r")) == NULL)
  {
    cout << "Невозможно открыть файл: " << ferror(fp) <<  "\n";
    return 1;
  }
  while(!feof(fp))
  {
    fgets(str, LENGTH, fp);
    temp = str;
    pos = temp.find("$Name");
    if(pos >= 0) temp = temp.replace(pos, 6, name);
    pos = temp.find("$Family");
    if(pos >= 0) temp = temp.replace(pos, 8, family);
    cout << temp;
  }

  // Закрываем файл
  fclose(fp);

  return 0;
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: