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

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

Войти
Регистрация
Восстановить пароль
 
 
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
#1

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

25.08.2013, 17:01. Просмотров 1021. Ответов 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, программа запускается но выкидывает ошибку, в чем косяк?

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

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

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

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

string и cstring. Как это устроено? - C++
Здравствуйте. Изучаю азы С++. В процессе возникло несколько вопросов. Вопросы простые, но мне мешают. Во-первых. В стандартном наборе...

Как CString преобразовать к нормальной строке? - C++
// ... CRecordset *m_rs; // ... LVITEM lvi; // ... СString s; m_rs-&gt;GetFieldValue(j, s); lvi.pszText = ?;Тип lvi.pszText -...

Как из CString получить int ... заранее спасибо!! - C++
Проблемка ... Как из CString получить int.... только плиз не советуйте куда заглядывать в MSDN у меня его нету.... СПАСИБО....

Как перевести CString -ское число в Int? - C++
Есть CString -ское число. Как перевести это число в int??? Вот: { m_cap = m_cap + '1'; m_cap = c; int c = attol(m_cap); c =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13050 / 7313 / 814
Регистрация: 27.09.2012
Сообщений: 18,049
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 17:07     strstr из библиотеки cstring, как должно функционировать? #2
C++
1
2
3
4
5
#include <iostream>
 
int main() {
    std::cout << (char*)NULL ;
}
Так понятнее?
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
25.08.2013, 17:20  [ТС]     strstr из библиотеки cstring, как должно функционировать? #3
Croessmah, к сожалению нет, уже несколько часов переписываю эти функции из библиотек и делаю программы дабы проверить,мозг закипает, можно поподробнее?
Croessmah
Модератор
Эксперт CЭксперт С++
13050 / 7313 / 814
Регистрация: 27.09.2012
Сообщений: 18,049
Записей в блоге: 3
Завершенные тесты: 1
25.08.2013, 17:31     strstr из библиотеки cstring, как должно функционировать? #4
Из стандарта:
strstr из библиотеки cstring, как должно функционировать?
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6442 / 3081 / 306
Регистрация: 04.12.2011
Сообщений: 8,482
Записей в блоге: 4
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
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
25.08.2013, 18:56  [ТС]     strstr из библиотеки cstring, как должно функционировать? #7
вообщем то я так понял все эти операторы предназначены для использования в условиях if, а точнее только там они работают полноценно.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Нулевой указатель это же непечатное.
т.е. нулевой указатель нельзя напечатать и именно по этому у меня ошибка ?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
25.08.2013, 19:01  [ТС]     strstr из библиотеки cstring, как должно функционировать? #10
Jupiter, не операторы а функции, как я уже написал выше, уже который час переписываю это все, голова кипит.
Croessmah
Модератор
Эксперт CЭксперт С++
13050 / 7313 / 814
Регистрация: 27.09.2012
Сообщений: 18,049
Записей в блоге: 3
Завершенные тесты: 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
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
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
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
26.08.2013, 12:16     strstr из библиотеки cstring, как должно функционировать? #16
Цитата Сообщение от VLK Посмотреть сообщение
да, видел набор иноземных слов
даже гугл транслейт их правильно переведет

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

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

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

Не по теме:

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

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

Цитата Сообщение от Croessmah Посмотреть сообщение
нельзя передавать указатель на char равный нулю в функцию operator<<
это же куда проще, чем кидать какие то необработанные куски и намеки, потом спорить ну и т.д.
Croessmah
Модератор
Эксперт CЭксперт С++
13050 / 7313 / 814
Регистрация: 27.09.2012
Сообщений: 18,049
Записей в блоге: 3
Завершенные тесты: 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, как должно функционировать?
Еще ссылки по теме:

Как с использованием CString выбрать слова из строки длинной 4 символа и записать их в файл? - C++
Как с использованием CString выбрать слова из строки длинной 4 символа и записать их в файл?

функция strstr - C++
Кто нибудь может объяснить как использовать функцию strstr со строками? В последней строке кода выдает ошибку &quot;no matching function for...

Функция strstr - C++
Здравствуйте. Объясните новичку почему функция strstr срабатывает всего один раз? Моя программа получает из вне данные , которые затем...

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

Функция strstr - C++
необходимо написать функцию strstr самому или точнее вот условие: Реализуйте функцию, которая ищет заданную подстроку в строке и...


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

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

Не по теме:

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

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

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