Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236

strstr из библиотеки cstring, как должно функционировать?

25.08.2013, 17:01. Показов 2878. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот у меня есть описание, переписано из книги:

char *strstr(const char *Str1, const char *Str2) - находит первое вхождение в строку Str1 строки Str2. Если строка Str2 найдена, возвращает указатель на нее в строке Str1. В противном случае возвращает нулевой указатель (NULL).

Вот программа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream> 
using std::cin;
using std::cout;
using std::endl;
 
#include <string>
 
 
int main()
{
char *Str1 = "Hello world, good day!"; 
char *Str2 = "w0rld"; 
 
cout << strstr(Str1, Str2) << endl; 
 
system("pause");
return 0;
}
В слове world мы заменили "o" на "0" (ноль), вроде как слово не найдено, значит возвращаем NULL, программа запускается но выкидывает ошибку, в чем косяк?

Вот ошибка:
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2013, 17:01
Ответы с готовыми решениями:

Использование стандартной библиотеки cstring
Добрый день. Столкнулся с маленькой проблемой хочу понять более подробные возможности С++. Задача: Напишите программу , которая просит...

Почему у меня для использования функций cstring не нужно включать прототип библиотеки
Я недавно начал осваивать с++ с помощью учебника и там по ходу главы создается тренировочный класс String для работы со строками и в нем...

CString::Format() и преобразование double в CString
Вот фрагмент программы: void CMy6_1Dlg::OnRadio3() { CString s; int i=m_list1.GetCount(); int a; int k=0; float...

23
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
25.08.2013, 17:07
C++
1
2
3
4
5
#include <iostream>
 
int main() {
    std::cout << (char*)NULL ;
}
Так понятнее?
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
25.08.2013, 17:20  [ТС]
Croessmah, к сожалению нет, уже несколько часов переписываю эти функции из библиотек и делаю программы дабы проверить,мозг закипает, можно поподробнее?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
25.08.2013, 17:31
Из стандарта:
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
25.08.2013, 18:47
Цитата Сообщение от VLK Посмотреть сообщение
C++
1
2
3
char *Str1 = "Hello world, good day!"; 
char *Str2 = "w0rld";
 cout << strstr(Str1, Str2) << endl;
Попробуйте так:
C++
1
2
3
4
5
6
7
char *Str1 = "Hello world, good day!"; 
char *Str2 = "w0rld";
char *foundStr=NULL;
foundStr = strstr(Str1, Str2);
if(foundStr  != NULL) cout << foundStr  << endl;
else
cout << "Word "<< Str2  <<" is not found at string "<< Str1 <<endl;
Нулевой указатель это же непечатное.
1
25.08.2013, 18:51

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
C++
1
2
char *Str1 = "Hello world, good day!"; 
char *Str2 = "w0rld";
C++
1
2
const char* Str1 = "Hello world, good day!"; 
const char* Str2 = "w0rld";
:rtfm:

1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
25.08.2013, 18:56  [ТС]
вообщем то я так понял все эти операторы предназначены для использования в условиях if, а точнее только там они работают полноценно.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Нулевой указатель это же непечатное.
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.08.2013, 18:59
Цитата Сообщение от VLK Посмотреть сообщение
вообщем то я так понял все эти операторы
какие операторы?

Цитата Сообщение от VLK Посмотреть сообщение
все эти операторы предназначены для использования в условиях if, а точнее только там они работают полноценно.
что-что? машина дура и делает то что ты пишешь

Цитата Сообщение от VLK Посмотреть сообщение
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
да
1
25.08.2013, 19:01

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
Да всё оно тут так. Или ноль или единица, в конечном счёте. Третьего не дано. :)
Главное понять, как работает та или иная функция... или свою написать (шучу))

1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
25.08.2013, 19:01  [ТС]
Jupiter, не операторы а функции, как я уже написал выше, уже который час переписываю это все, голова кипит.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
26.08.2013, 00:32
Цитата Сообщение от VLK Посмотреть сообщение
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
Вы смотрели на пост #4, где я привел фрагмент из стандарта?
Там же ясно написано, что указатель не должен быть равен нулю

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Нулевой указатель это же непечатное.
Символы '\a' и '\0' тоже по сути не печатные

0
26.08.2013, 03:26

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Символы '\a' и '\0' тоже по сути не печатные
Не-а! Они не печатаются, а нулевой указатель, это непечатное, то есть неприличное с точки зрения оператора <<
так как для указателей на char он ведёт себя очень нервно. Сразу пытается разыменовать и вывести. Помнишь, мы как-то спорили. Я до сих пор считаю, что нулевой указатель на char, это непечатно. Оно не только не выводится, но и выводит сам оператор. 8-)

0
26.08.2013, 04:08

Не по теме:

IGPIGP, ну так в стандарте же написано, что нулевой указатель на тип char - это кака для этого оператора :D

0
26.08.2013, 04:18

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
IGPIGP, ну так в стандарте же написано, что нулевой указатель на тип char - это кака для этого оператора
Очень мудрый документ! Страуструп руководил разработкой.:yes: А указатель и не по стандарту, а и по фейсу видно. Тем паче если ноль, то и подавно непечатный. Совершенно страуСИный. :)

0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
26.08.2013, 12:08  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Вы смотрели на пост #4, где я привел фрагмент из стандарта?
Там же ясно написано, что указатель не должен быть равен нулю
да, видел набор иноземных слов, для меня с не совсем понятным смыслом.

Если указатель не должен быть равен нулю, почему тогда вот это работает:

C++
1
2
3
4
5
6
char *Str1 = "Hello world, good day!"; 
char *Str2 = "w0rld"; 
 
char *d = strstr(Str1, Str2); 
 
char *V = NULL;
может все же правильнее можно сказать что нельзя напечатать указатель на 0 ?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.08.2013, 12:16
Цитата Сообщение от VLK Посмотреть сообщение
да, видел набор иноземных слов
даже гугл транслейт их правильно переведет

Цитата Сообщение от VLK Посмотреть сообщение
может все же правильнее можно сказать что нельзя напечатать указатель на 0 ?
да. сколько ж можно то

Добавлено через 5 минут
так даже ещё точнее
Цитата Сообщение от VLK Посмотреть сообщение
правильнее можно сказать что нельзя напечатать указатель char равный 0
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
26.08.2013, 12:21
Цитата Сообщение от VLK Посмотреть сообщение
Если указатель не должен быть равен нулю, почему тогда вот это работает:
И что здесь может не сработать?
Сказано же, что нельзя передавать указатель на char равный нулю в функцию operator<<

Добавлено через 18 секунд

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
даже гугл транслейт их правильно переведет
Этот может :D

2
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
26.08.2013, 12:30  [ТС]
Croessmah, вами было так много сказано в этой теме, какие то скриншоты, сколько энергии было потрачено, столько символов было напечатано, неужели нельзя было еще в первом сообщении написать это волшебное предложение:

Цитата Сообщение от Croessmah Посмотреть сообщение
нельзя передавать указатель на char равный нулю в функцию operator<<
это же куда проще, чем кидать какие то необработанные куски и намеки, потом спорить ну и т.д.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
26.08.2013, 12:34
Цитата Сообщение от VLK Посмотреть сообщение
написать это волшебное предложение:
В посте #4 это даже красным подчеркнуто!!!
Цитата Сообщение от Jupiter Посмотреть сообщение
даже гугл транслейт их правильно переведет
В посте #11 жирным выделено

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
сколько энергии было потрачено
0.00000001%?



Добавлено через 35 секунд
Цитата Сообщение от VLK Посмотреть сообщение
какие то скриншоты
На этом скриншоте все ответы. Стоить только посмотреть внимательнее
0
26.08.2013, 12:34

Не по теме:

VLK, вам срочно нужно решать задачи на логику и на внимательность

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2013, 12:34
Помогаю со студенческими работами здесь

Как должна быть организована сеть офиса? Что должно быть настроено обязательно, а чего быть не должно?
Добрый день. Сразу оговорюсь, что я инженер-строитель и настройкой сети занимаюсь только потому, что больше некому. Поэтому некоторые,...

Как использовать функции string::find или функция strstr(str1 ,str2)
как использовать функции string::find или функция strstr(str1 ,str2) Добавлено через 3 минуты вернее какой у них синтаксис привдети...

как конвертнуть из char в CString?
Здрасте! Подскажите,плиз, как конвертнуть из char в CString ?

Как конвертировать CString в char[]
У меня есть массив char data=&quot;VOLT:DC:RANGE 10\n&quot;; мне нужно в этот массив занести свои данные например из текстбокс, добавил на...

Как ковертировать из CString в BYTE*
Как ковертировать из CString в BYTE* ?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru