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

создать функцию для работы с строковыми переменными без использования библиотеки <string.h> - C++

Восстановить пароль Регистрация
 
kolaider
Сообщений: n/a
18.07.2011, 21:07     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #1
Нужно создать функцию для работы с строковыми переменными без использования библиотеки <string.h>.
собственно сама задача : поиск первого вхождения строки s1 в строку s , выход - указатель на первый символ с s1 в s. Если s1 не входит в s - результат функции - NULL.
буду очень благодарен если ктото сможет помочь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2011, 21:07     создать функцию для работы с строковыми переменными без использования библиотеки <string.h>
Посмотрите здесь:

Функция atoi, без использования библиотеки string C++
Задача со строками без использования библиотеки string.h C++
C++ Работа со строковыми переменными без использования string.h
C++ Добавить 3 переменные в массив char без использования библиотеки string
работа с текстом без использования string C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.07.2011, 21:14     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #2
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
28
29
30
31
32
33
34
#include <stdio.h>
 
char * my_strstr(const char * haystack, const char * needle){
    const char * pH, * pN;
    
    if ( ! haystack || ! *haystack || ! needle || ! *needle )
        return NULL;
    
    while ( *haystack ){
        for ( pH = haystack, pN = needle; *pN && *pH == *pN; ++pH, ++pN )
            ;
        if ( ! *pN )
            return (char*) haystack;
        ++haystack;
    }
    
    return NULL;
}
 
#define MAX_LEN 256
#define INPUT_MASK "%255[^\n]%*c"
 
int main(void){
    char str[MAX_LEN], sub[MAX_LEN], * p;
    
    while ( printf("String: ") && scanf(INPUT_MASK, str) == 1 && printf("Substring: ") && scanf(INPUT_MASK, sub) == 1 ){
        if ( p = my_strstr(str, sub) )
            printf("Found at: %s\n", p);
        else
            printf("Not found.\n");
    }
    
    return 0;
}
kolaider
Сообщений: n/a
18.07.2011, 21:27     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #3
ого ! вот так да ...спасибо большое
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
18.07.2011, 22:01     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #4
Если брать точность стандартной функцией то нужно возвращать константный указатель да и ладно, кто будет в область памяти писать для чтения. Вот мой вариант.
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
#include <stdio.h>
 
 
const char* _strstr(const char* s, const char* s1) {
     const char* p, *t;
     do {
          p = s1;
          t  = s;
          do {
             if(! *p)
                  return s;
          } while(*p++ == *t++);
     } while( *s++ );
     return NULL;
}
 
int main(void) {
 
   const char* str = _strstr("car, cars sport", "cars");
   if(str)
        puts(str);
 
   getchar();
   return 0;
}
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
18.07.2011, 22:11     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #5
Цитата Сообщение от xAtom Посмотреть сообщение
Если брать точность стандартной функцией то нужно возвращать константный указатель да и ладно, кто будет в область памяти писать для чтения.
Если честно, то я до конца так и не понял мысль. Но стандартная функция возвращает указатель на неконстантную строку.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.07.2011, 23:05     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #6
Цитата Сообщение от xAtom Посмотреть сообщение
Если брать точность стандартной функцией
Если честно, я вообще ничего не понял, но вот на всякий случай:
man strstr
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 06:57     создать функцию для работы с строковыми переменными без использования библиотеки <string.h>
Еще ссылки по теме:

C++ Создать функцию вычисления степени числа с показателем (без использования функции pow)
Задача без использования типа string C++
Как сделать замену слова в строке без использования функций библиотеки string? C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.07.2011, 06:57     создать функцию для работы с строковыми переменными без использования библиотеки <string.h> #7
Цитата Сообщение от xAtom
Если брать точность стандартной функцией то нужно возвращать константный указатель да и ладно, кто будет в область памяти писать для чтения.
делай приведение возле return
в C использование модификаторов типа в возвращаемом значении функции - неопределённое поведение
Yandex
Объявления
19.07.2011, 06:57     создать функцию для работы с строковыми переменными без использования библиотеки <string.h>
Ответ Создать тему
Опции темы

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