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

правильно ли проверка на то, что поиск пуст? - C++

Восстановить пароль Регистрация
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
15.04.2012, 21:35     правильно ли проверка на то, что поиск пуст? #1
вот часть кода:
C++
1
2
3
4
5
6
7
8
...
proc = strstr(proc, slovo);
if(proc == NULL)
{
  log << "proc is NULL\n";
  break;
}
...
Правильно я делаю или нет? Просто если я вставляю еще одну часть кода, то выходит ошибка "Segmentation fault". Если надо, могу весь код выложить.

Спасибо за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 21:35     правильно ли проверка на то, что поиск пуст?
Посмотрите здесь:

Как правильно реализовать поиск количества заданого символа C++
Что не правильно? C++
C++ Как узнать, что текстовый файл пуст?
C++ Проверить, пуст ли файл
Проверка пуст ли массив? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.kto
Сообщений: n/a
15.04.2012, 21:39     правильно ли проверка на то, что поиск пуст? #2
Функция, проверяющая, является ли текстовый файл пустым
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
15.04.2012, 22:04  [ТС]     правильно ли проверка на то, что поиск пуст? #3
Mr.kto, это полезно, но у меня не пустой файл, да и не в файле уже дело так то
Mr.kto
Сообщений: n/a
15.04.2012, 22:08     правильно ли проверка на то, что поиск пуст? #4
Kirill Losev, ну твоя проверка на поиск по логике правильная!
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
15.04.2012, 23:01  [ТС]     правильно ли проверка на то, что поиск пуст? #5
Mr.kto, осталось понять отчего "... fault"
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 23:03     правильно ли проверка на то, что поиск пуст? #6
Попробуй промежуточную переменную использовать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 01:25     правильно ли проверка на то, что поиск пуст?
Еще ссылки по теме:

Что не правильно в коде, что посоветуете дописать C++
C++ Поиск ближайшей позиции правильно расставленных скобок
Не правильно работает поиск в текстовом файле C++

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

Или воспользуйтесь поиском по форуму:
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
16.04.2012, 01:25  [ТС]     правильно ли проверка на то, что поиск пуст? #7
Nekto, спасибо. сейчас попробую.
кстати, это может зависеть от выбора ОС для программирования?
сейчас пользуюсь линуксом, под виндой на виртуалке попробовал облегченную версию с этой проблемой:
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    int index = 0;
    char saver;
    char text[] = "ksjfhwliufgliwuegf dsklfuhlsdk";
    setlocale(LC_ALL, "RUS");
    while(1)
    {
        char *proc = strstr(text, " ");
        if(proc == NULL)
        {
            cout << "proc is NULL" << endl;
            break;
        }
        int len_proc = strlen(proc);
        int len_text = strlen(text);
        index = len_text - len_proc;
        saver = text[index];
        text[index] = '*';
    }
    text[index] = saver;
    cout << "строка: " << text << endl;
}
тут работает.
сейчас попробую этот же код на линуксе запустить, посмотрим что получится
Спасибо за внимание!

Добавлено через 1 минуту
На линухе тоже работает. Буду искать.

Добавлено через 8 минут
Все, проблему нашел.
У меня в коде
C++
1
2
3
4
5
6
7
8
.....
proc = strstr(proc, slovo);
if(proc == NULL)
{
  log << "proc is NULL\n";
  break;
}
.....
между строками
C++
1
2
3
.....
proc .....//и
if.....
стояла строка
C++
1
2
3
.....
log << "proc: " << proc << "_" << endl;
.....
то есть было так:
C++
1
2
3
4
5
6
7
8
9
10
.....
.....
proc = strstr(proc, slovo);
log << "proc: " << proc << "_" << endl;
if(proc == NULL)
{
  log << "proc is NULL\n";
  break;
}
.....
Когда proc == NULL, то программа, видимо, не может ничего вывести и аварийно завершалась.
Сейчас убрал строку
C++
1
2
3
.....
log << "proc: " << proc << "_" << endl;
.....
после if и выход из цикла проходит нормально. Прошу прощения, что ввел вас в заблуждение.
Но "Segmentation fault" выходит на этом участке кода:
C++
1
2
3
4
5
6
7
8
9
.....
while(1)
{
    int searcher = strcspn(s_mark.mark, "*");
    if(searcher == 0)
        break;
    s_mark.mark[searcher] = saver;
}
.....
Тут все ли грамотно?
Заранее спасибо!

Добавлено через 2 часа 3 минуты
люди, ау!
Yandex
Объявления
16.04.2012, 01:25     правильно ли проверка на то, что поиск пуст?
Ответ Создать тему
Опции темы

Текущее время: 10:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru