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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка LNK2001 и LNK1120 http://www.cyberforum.ru/cpp-beginners/thread549330.html
#include <math.h> #include <stdio.h> #include <stdlib.h> const double dt=1e-3; const double g=9.81; double fly(double U, double alfa, double h0){ double y=h0; double x=0; double t=0;
C++ Заполнить массив по спирали Заполнить двумерный массив,возрастающей последовательностью, расположив элементы спиралью с правого верхнего угла: 1 2 6 3 5 7 4 8 9 http://www.cyberforum.ru/cpp-beginners/thread549320.html
C++ Составить массив, содержащий минимальные элементы каждой строки
дана матрица А(5,6).составить массив,содержащий минимальные элементы каждой строки.данные считывать из файла,результат вывести в файл (программа почему то неправильно работает,зависает при запуске!в чём может быть ошибка?) программа сохраняет файл в "dat" #include <stdio.h> #include <vcl.h> #pragma hdrstop //---------------------------------------------------------------------------
C++ уравнение 5 класса
Уравнение для пятиклассников представляет собой строку длиной 5 символов. Второй символ строки является либо знаком '+' (плюс) либо '-' (минус), четвёртый символ — знак '=' (равно). Из первого, третьего и пятого символов ровно два являются цифрами из диапазона от 0 до 9, и один — буквой x, обозначающей неизвестное. Требуется написать программу, которая позволит решить данное уравнение...
C++ Подсчитать сумму первого и последнего столбца в матрице http://www.cyberforum.ru/cpp-beginners/thread549290.html
Есть задача. Подсчитать сумму первого и последнего столбца в неопределенной матрице и с неопределенном количеством пробелов между элементами. Написать именно на C++ использовать потоки. Вот код #include <sstream> #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; int main(){ int x;
C++ Найти слово "ТЕКСТ", если такое слово есть,то отпечатать его номер в строке. В символьной строке, содержащей не более 80 символов, каждые два соседних слова разделены одним пробелом, строка заканчивается символом точка("."). Найти слово "ТЕКСТ", если такое слово есть, то отпечатать его номер в строке. Если такого слова нет, то сообщить об этом. у меня есть код но его надо переделать в визуальный!Помогите с переделкой! char str; int i, b=0; char *c; ... подробнее

Показать сообщение отдельно
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
16.04.2012, 01:25  [ТС]     правильно ли проверка на то, что поиск пуст?
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 минуты
люди, ау!
 
Текущее время: 07:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru