Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка с strstr, с параметром Null 
:(
    Опции темы
Oconor
Дата 1.5.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.5.2010

Репутация: нет
Всего: нет



Программа должна считать некоторое количество под строк в строке.
Вызываю strstr из string.h. Первый раз вызываю с первым параметром строки, а второй раз с параметром Null, дабы использовать туже строку, тут и выдает ошибку:

Код

c:\users\esenin\documents\visual studio 2008\projects\temp\temp\main.cpp(12) : error C2668: 'strstr' : ambiguous call to overloaded function
c:\program files\microsoft visual studio 9.0\vc\include\string.h(189): could be 'char *strstr(char *,const char *)'
c:\program files\microsoft visual studio 9.0\vc\include\string.h(165): or       'const char *strstr(const char *,const char *)'
1>        while trying to match the argument list '(int, char *)'

Если я правильно понял то не правильно передаю тип параметров в strstr,  или нельзя использовать strstr с параметром null.

Код

 int sTrSub(char *str1, char *str2)
{
    int i = 0;
    char *String = strstr(str1, str2); 
    while(String != NULL)
    {
        i++;
        String = strstr(NULL, str2);
    }
    return i;
}


Это сообщение отредактировал(а) Oconor - 1.5.2010, 18:45
PM MAIL   Вверх
toxx
Дата 1.5.2010, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



так ясное дело неверно
Код

#define NULL=0

Код

char * strstr ( const char *, const char * );

PM MAIL   Вверх
mes
Дата 1.5.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Oconor @  1.5.2010,  17:44 Найти цитируемый пост)
а второй раз с параметром Null, дабы использовать туже строку

ну в документации ничего, о таком способе не говорится :
http://cplusplus.com/reference/clibrary/cstring/strstr/
smile

Цитата(toxx @  1.5.2010,  17:59 Найти цитируемый пост)
:
    
#define NULL=0


1. #define NULL  0
2. что объсняет наличие этого дефайна ?
smile


Это сообщение отредактировал(а) mes - 1.5.2010, 19:11


--------------------
PM MAIL WWW   Вверх
toxx
Дата 1.5.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



mes
Цитата

1. #define NULL  0

тьфу блин, да конечно так =)

Цитата

2. что объсняет наличие этого дефайна ?

То что функция strstr не перегружена для значений
Код

char * strstr ( int , const char * );

PM MAIL   Вверх
mes
Дата 1.5.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(toxx @  1.5.2010,  18:15 Найти цитируемый пост)
То что функция strstr не перегружена для значений

http://codepad.org/MiLXX4sA
smile


--------------------
PM MAIL WWW   Вверх
toxx
Дата 1.5.2010, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Код

c:\users\esenin\documents\visual studio 2008\projects\temp\temp\main.cpp(12) : error C2668: 'strstr' : ambiguous call to overloaded function
c:\program files\microsoft visual studio 9.0\vc\include\string.h(189): could be 'char *strstr(char *,const char *)'
c:\program files\microsoft visual studio 9.0\vc\include\string.h(165): or       'const char *strstr(const char *,const char *)'
1>        while trying to match the argument list '(int, char *)'


А что же делать тогда с тем что компилятор пишет, что мол он не может найти подходящей функции из 2х представленных?
значит не проходит такое с strstr?
PM MAIL   Вверх
mes
Дата 1.5.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(toxx @  1.5.2010,  18:37 Найти цитируемый пост)
значит не проходит такое с strstr? 

да, функция strstr не предназначена для передачи в нее исходной строки как NULL.

в остальных случаях при "амбигиозности" нужно просто указать точный тип:
http://codepad.org/nxNCFQfV


--------------------
PM MAIL WWW   Вверх
toxx
Дата 1.5.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



mes
а что такое "амбигиозность"?
PM MAIL   Вверх
mes
Дата 1.5.2010, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(toxx @  1.5.2010,  19:37 Найти цитируемый пост)
а что такое "амбигиозность"? 

вольная транслитерация слова :
Цитата(toxx @  1.5.2010,  18:37 Найти цитируемый пост)
ambiguous


http://translate.google.com/?hl=ru&tab...en|ru|ambiguous



--------------------
PM MAIL WWW   Вверх
Oconor
Дата 2.5.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.5.2010

Репутация: нет
Всего: нет



Цитата

да, функция strstr не предназначена для передачи в нее исходной строки как NULL.

Всем спасибо решил проблему по другому.

Код

int sTrSub(char *str1, char *str2)
{
    int i = 0;
    for (; ; i++)
    {
        str1 = strstr(str1, str2);
        if (!str1) break;
        str1 += strlen(str2);
    }
    return i;
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.