Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hahanov
1 / 1 / 0
Регистрация: 16.07.2014
Сообщений: 27
#1

Поиск подстроки между заданными символами - C++

03.08.2014, 21:27. Просмотров 348. Ответов 4
Метки нет (Все метки)

Написал код на C++, он ищет символы между символами введёнными в Edit и ".txt" . Всё вроде бы работает,но он ищет символы всего лишь один раз...
Наверное всё легко и просто (да и код простой), однако найти ошибку я не могу...
В чём проблема почему не ищет второй раз?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
char slova[1000];
int d=0;
AnsiString log0=Edit1->Text;  // Введённое в Edit1 == "bnv243.txt bnv355.txt" 
 char* log00=log0.c_str();
  AnsiString log7=Edit2->Text; // Введённое в Edit2 == "bnv"
 char* log77=log7.c_str();
 size_t i;
 size_t g;
 char *pos2;
 char *pos;
 int mon=0;
    for(;;){
 
   pos=strstr(log00,log77);
    if (pos!=NULL){
      i=pos-log00;
       for(;;){
       slova[d]=log00[i];
       log00[i]=0;
       d++;             
       i++;
      pos2=strstr(slova,".txt");
       if(pos2!=NULL){
       g=pos2-slova;
       slova[g]=0;
       g++;
       slova[g]=0;
       g++;
       slova[g]=0;
       g++;
       slova[g]=0;
 
       break;
       }
       }
       Memo1->Text=Memo1->Text+slova;
 
 
    }
    else break;
    }
RAD Studio XE6-> C++ Builder -> VCL Forms Application
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2014, 21:27     Поиск подстроки между заданными символами
Посмотрите здесь:

Поиск подстроки C++
C++ Вделить из строки подстроки с цифрами, буквами и прочими символами
C++ Нули между символами в строке
Поиск подстроки C++
C++ Вставка пробелов перед заданными символами
поиск подстроки между разделителями C++
Вывести подстроку данной строки, находящуюся между символами a и b C++
C++ Найти расстояние между символами с1 и с2
Найти в строке слова, начинающиеся и заканчивающиеся заданными символами C++
Функция удаления символов заключенных между двумя заданными символами C++
Вывести на консоль подстроку, ограниченную заданными символами C++
C++ Создать и вывести на экран матрицу типа char, заполненную заданными символами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lynatik001
38 / 32 / 4
Регистрация: 28.09.2012
Сообщений: 620
04.08.2014, 00:35     Поиск подстроки между заданными символами #2
Пошаговое выполнение сделай . Не вникал в код но может из за этого break; ?)
hahanov
1 / 1 / 0
Регистрация: 16.07.2014
Сообщений: 27
04.08.2014, 01:00  [ТС]     Поиск подстроки между заданными символами #3
Lynatik001, нет if (pos!=NULL) выполняется, а потом ничего не происходит...

Добавлено через 7 минут
Строка
C++
1
pos=strstr(log00,log77);
выполняется два раза (цикл идёт).
zss
Модератор
Эксперт С++
6246 / 5849 / 1891
Регистрация: 18.12.2011
Сообщений: 14,985
Завершенные тесты: 1
04.08.2014, 09:13     Поиск подстроки между заданными символами #4
C++
1
2
3
4
5
6
7
// при первом проходе здесь d равно нулю
for(;;){
       slova[d]=log00[i];// переписали одну букву, остальное мусор
       log00[i]=0;
       d++;             
       i++;
      pos2=strstr(slova,".txt"); // и что будет искаться в этом мусоре?
hahanov
1 / 1 / 0
Регистрация: 16.07.2014
Сообщений: 27
04.08.2014, 11:11  [ТС]     Поиск подстроки между заданными символами #5
Да d равно нулю при первом проходе, при втором не должно быть нулю иначе будет перезапись... так и должно быть.
Почему мусор?
В массиве slova будет искаться ".txt" после чего найденные символы .txt сотрутся, далее произойдёт: остановка второго цикла,
Продолжение первого цикла, проверка массива:есть ли символы введённые в Edit, однако не ищет почему?
Yandex
Объявления
04.08.2014, 11:11     Поиск подстроки между заданными символами
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru