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

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

Восстановить пароль Регистрация
 
 
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
25.08.2013, 17:01     strstr из библиотеки cstring, как должно функционировать? #1
Вот у меня есть описание, переписано из книги:

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, программа запускается но выкидывает ошибку, в чем косяк?

Вот ошибка:
strstr из библиотеки cstring, как должно функционировать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2013, 17:01     strstr из библиотеки cstring, как должно функционировать?
Посмотрите здесь:

Функция strstr C++
Как из CString получить int ... заранее спасибо!! C++
C++ Как перевести CString -ское число в Int?
C++ Как CString преобразовать к нормальной строке?
C++ как использовать функции string::find или функция strstr(str1 ,str2)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11803 / 6782 / 766
Регистрация: 27.09.2012
Сообщений: 16,834
Записей в блоге: 2
Завершенные тесты: 1
25.08.2013, 17:07     strstr из библиотеки cstring, как должно функционировать? #2
C++
1
2
3
4
5
#include <iostream>
 
int main() {
    std::cout << (char*)NULL ;
}
Так понятнее?
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
25.08.2013, 17:20  [ТС]     strstr из библиотеки cstring, как должно функционировать? #3
Croessmah, к сожалению нет, уже несколько часов переписываю эти функции из библиотек и делаю программы дабы проверить,мозг закипает, можно поподробнее?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11803 / 6782 / 766
Регистрация: 27.09.2012
Сообщений: 16,834
Записей в блоге: 2
Завершенные тесты: 1
25.08.2013, 17:31     strstr из библиотеки cstring, как должно функционировать? #4
Из стандарта:
strstr из библиотеки cstring, как должно функционировать?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6159 / 2888 / 282
Регистрация: 04.12.2011
Сообщений: 7,686
Записей в блоге: 3
25.08.2013, 18:47     strstr из библиотеки cstring, как должно функционировать? #5
Цитата Сообщение от 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;
Нулевой указатель это же непечатное.
Jupiter
25.08.2013, 18:51
  #6

Не по теме:

Цитата Сообщение от 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";

VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
25.08.2013, 18:56  [ТС]     strstr из библиотеки cstring, как должно функционировать? #7
вообщем то я так понял все эти операторы предназначены для использования в условиях if, а точнее только там они работают полноценно.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Нулевой указатель это же непечатное.
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.08.2013, 18:59     strstr из библиотеки cstring, как должно функционировать? #8
Цитата Сообщение от VLK Посмотреть сообщение
вообщем то я так понял все эти операторы
какие операторы?

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

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

Не по теме:

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

VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
25.08.2013, 19:01  [ТС]     strstr из библиотеки cstring, как должно функционировать? #10
Jupiter, не операторы а функции, как я уже написал выше, уже который час переписываю это все, голова кипит.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11803 / 6782 / 766
Регистрация: 27.09.2012
Сообщений: 16,834
Записей в блоге: 2
Завершенные тесты: 1
26.08.2013, 00:32     strstr из библиотеки cstring, как должно функционировать? #11
Цитата Сообщение от VLK Посмотреть сообщение
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
Вы смотрели на пост #4, где я привел фрагмент из стандарта?
Там же ясно написано, что указатель не должен быть равен нулю

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

Не по теме:

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

IGPIGP
26.08.2013, 03:26
  #12

Не по теме:

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

Croessmah
26.08.2013, 04:08
  #13

Не по теме:

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

IGPIGP
26.08.2013, 04:18
  #14

Не по теме:

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

VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
26.08.2013, 12:08  [ТС]     strstr из библиотеки cstring, как должно функционировать? #15
Цитата Сообщение от 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 ?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
26.08.2013, 12:16     strstr из библиотеки cstring, как должно функционировать? #16
Цитата Сообщение от VLK Посмотреть сообщение
да, видел набор иноземных слов
даже гугл транслейт их правильно переведет

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

Добавлено через 5 минут
так даже ещё точнее
Цитата Сообщение от VLK Посмотреть сообщение
правильнее можно сказать что нельзя напечатать указатель char равный 0
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11803 / 6782 / 766
Регистрация: 27.09.2012
Сообщений: 16,834
Записей в блоге: 2
Завершенные тесты: 1
26.08.2013, 12:21     strstr из библиотеки cstring, как должно функционировать? #17
Цитата Сообщение от VLK Посмотреть сообщение
Если указатель не должен быть равен нулю, почему тогда вот это работает:
И что здесь может не сработать?
Сказано же, что нельзя передавать указатель на char равный нулю в функцию operator<<

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

Не по теме:

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

VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
26.08.2013, 12:30  [ТС]     strstr из библиотеки cstring, как должно функционировать? #18
Croessmah, вами было так много сказано в этой теме, какие то скриншоты, сколько энергии было потрачено, столько символов было напечатано, неужели нельзя было еще в первом сообщении написать это волшебное предложение:

Цитата Сообщение от Croessmah Посмотреть сообщение
нельзя передавать указатель на char равный нулю в функцию operator<<
это же куда проще, чем кидать какие то необработанные куски и намеки, потом спорить ну и т.д.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11803 / 6782 / 766
Регистрация: 27.09.2012
Сообщений: 16,834
Записей в блоге: 2
Завершенные тесты: 1
26.08.2013, 12:34     strstr из библиотеки cstring, как должно функционировать? #19
Цитата Сообщение от VLK Посмотреть сообщение
написать это волшебное предложение:
В посте #4 это даже красным подчеркнуто!!!
Цитата Сообщение от Jupiter Посмотреть сообщение
даже гугл транслейт их правильно переведет
В посте #11 жирным выделено

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

Не по теме:

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



Добавлено через 35 секунд
Цитата Сообщение от VLK Посмотреть сообщение
какие то скриншоты
На этом скриншоте все ответы. Стоить только посмотреть внимательнее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 12:34     strstr из библиотеки cstring, как должно функционировать?
Еще ссылки по теме:

string и cstring. Как это устроено? C++
C++ Как с использованием CString выбрать слова из строки длинной 4 символа и записать их в файл?
C++ Не работает strstr

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

Или воспользуйтесь поиском по форуму:
Jupiter
26.08.2013, 12:34     strstr из библиотеки cstring, как должно функционировать?
  #20

Не по теме:

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

Yandex
Объявления
26.08.2013, 12:34     strstr из библиотеки cstring, как должно функционировать?
Ответ Создать тему
Опции темы

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