Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
#1

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

15.04.2012, 21:35. Просмотров 422. Ответов 6
Метки нет (Все метки)

вот часть кода:
C++
1
2
3
4
5
6
7
8
...
proc = strstr(proc, slovo);
if(proc == NULL)
{
  log << "proc is NULL\n";
  break;
}
...
Правильно я делаю или нет? Просто если я вставляю еще одну часть кода, то выходит ошибка "Segmentation fault". Если надо, могу весь код выложить.

Спасибо за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 21:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос правильно ли проверка на то, что поиск пуст? (C++):

Проверка пуст ли массив? - C++
В операторе ввода класса хотел реализовать проверку на то пуст массив или нет, и ели НЕТ то очистить его,чтобы создать по-новой. Логично,...

Как узнать, что текстовый файл пуст? - C++
Обычная проверка на if(feof(f)) не работает...файл пуст- я его проверял, но пока я с пустого файла что-то не считаю feof(f) true не...

Проверка, пуст ли список, очистка списка, печать списка в направлении от верха к низу - C++
Доброго вечера. Пожалуйста помогите разобраться с заданием на структуры, и подскажите с чего здесь начинать? 1) Кольцевой...

После удаления (перезаписи) данных из бинарного файла, файл всё равно существует, несмотря на то, что он пуст - C++
после удаления(перезаписи) данных из бинарного файла, файл всё равно существует, как сделать так чтобы и файл удалялся если он пустой?

проверка правильно ли логинится пользователь, что неправильно - PHP
&lt;?php require_once('header.php'); require_once ('bd.php'); if(isset($_POST)) { if (empty($_POST) &amp;&amp; empty($_POST))...

Поиск слов в документах. Проверка что ничего не найдено. - C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

6
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
15.04.2012, 22:04  [ТС] #3
Mr.kto, это полезно, но у меня не пустой файл, да и не в файле уже дело так то
0
Mr.kto
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"
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 23:03 #6
Попробуй промежуточную переменную использовать.
1
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 минуты
люди, ау!
0
16.04.2012, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 01:25
Привет! Вот еще темы с ответами:

Как проверить, что выбранный диапазон ячеек пуст - VBA
Такой вопрос: есть такой код: Dim r As Range With Sheets(&quot;data1&quot;).Columns(Target.Column - 1).Find(Target.Value, LookAt:=xlWhole) ...

Обработка файла txt - программа полагает, что файл пуст - Perl
Привет. Мой скриптик при обработке текстового файла, назовем его ххх.txt, выдаёт пустой файл (0Кб)!! Где у меня ошибка?? Подскажите как...

Как определить, что к Dbgrid не подключен DataSet или он пуст? - Delphi БД
Здравствуйте! Подскажите, пожалуйста, каким образом можно реализовать следующее: У меня есть дбгрид, при клике по нему с выделенной...

.NET 4.x Если TextBox пуст, написать в нем что-либо серым текстом - C# WPF
Есть TextBox который привязан к значению double Плотность Хотелось бы что когда поле пустое то внутри было написано плотность серыми...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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