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

Ваш аккаунт

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

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

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

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

12K
08 мая 2007 года
mortar89
25 / / 17.11.2006
Народ,такая вот проблемка, нужно в текстовом файле найти "набор" символов, и вывести на экран символы стоящие справа от этого "набора" до перехода на следующую строку.

Например задана подстрока сhar obrazec[]={"iskat_mena"};
а в текстовом файле она находится в начале какой-то строки и нужно найти ее и вывести символы находящиеся справа от obrazca до перехода на следующую строку, помогите пожалуйста срочно надо.
2.0K
08 мая 2007 года
BroKeR
163 / / 04.05.2006
она находится именно в начале строки или в любом месте строки?
12K
08 мая 2007 года
mortar89
25 / / 17.11.2006
Цитата: BroKeR
она находится именно в начале строки или в любом месте строки?


Да, образец всегда в начале строки.

2.0K
08 мая 2007 года
BroKeR
163 / / 04.05.2006
ну так и в чем проблема?Берешь образец,вычисляешь его длинну,пусть будет l.Потом начинаешь смотреть строки,отрезаешь от строки(в которй ведется поиск)кусок равный l,в конец добавляешь '\0'(конец строки).Потом strcmp(образец,обрезанный кусок)-она возвращает 0,если совпадают.Ну и соответственно если 0,то идем по строке пока не встретим '\n'. и все.
12K
08 мая 2007 года
mortar89
25 / / 17.11.2006
Цитата: BroKeR
ну так и в чем проблема?Берешь образец,вычисляешь его длинну,пусть будет l.Потом начинаешь смотреть строки,отрезаешь от строки(в которй ведется поиск)кусок равный l,в конец добавляешь '\0'(конец строки).Потом strcmp(образец,обрезанный кусок)-она возвращает 0,если совпадают.Ну и соответственно если 0,то идем по строке пока не встретим '\n'. и все.




Со слова "отрезаешь от строки.....", если тебя не затруднит напиши как это будет выглядеть на Си.

2.0K
08 мая 2007 года
BroKeR
163 / / 04.05.2006
ща что нибудь придумаем
8.9K
09 мая 2007 года
Kulti
77 / / 29.07.2006
Если еще не поздно, то собсна вот код. Я имя файла из командной строки беру - так привычнее.
Код:
void main(int argc, char *argv[])
{
  FILE *f = NULL;
  char *obrazec = "im";
  char *begin = NULL;
  char c;

  int len_obr = strlen(obrazec);
  begin = (char*)malloc(len_obr+1);

  f = fopen( argv[1], "r" );
  while ( fgets(begin, len_obr+1, f ) != NULL )
  {
    if ( strcmp(begin, obrazec) == 0 )
    {
      c = (char)fgetc(f);
      while ( c != '\n' && c != '\r' && c != EOF )
      {
        printf("%c", c);
        c = (char)fgetc(f);
      }
      fclose(f);
      return;
    }
  }
  if (f != NULL)
    fclose(f);
}
2.0K
09 мая 2007 года
BroKeR
163 / / 04.05.2006
Код:
#include <string>
#include <fstream>

#include <iostream>

int _tmain(int argc, char* argv[])
{
    const std::string expressionWeAreSearchingFor("searchMe");
    const int bufferSize = 1024;
    char buffer[bufferSize];
    std::ifstream file("1.txt");
    if (!file)
    {
        std::cerr << "file error";
        return -1;
    }

    file.getline(buffer, bufferSize - 1);
    const std::string line(buffer);
    if ( line.empty() )
    {
        std::cerr << "file is empty !";
        return -1;
    }

    int pos = line.find(expressionWeAreSearchingFor);   //ищем первую с начала
    //int pos = line.rfind(expressionWeAreSearchingFor);    // или первую с конца
    if ( pos == std::string::npos )
    {
        std::cerr << "substring \"" << expressionWeAreSearchingFor << "\" not found in string \"" << line << "\"";
        return -1;
    }
   
    pos += expressionWeAreSearchingFor.length(); //конец искомой подстроки

    std::string result = line.substr(pos, line.length() - pos);

    std::cout << "result is \"" << result << "\"" << std::endl;

    return 0;
}
12K
09 мая 2007 года
mortar89
25 / / 17.11.2006
Спасибо всем! Выручили!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог