С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
kolaider
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 2
#1

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

18.07.2011, 21:07. Просмотров 816. Ответов 6
Метки нет (Все метки)

Нужно создать функцию для работы с строковыми переменными без использования библиотеки <string.h>.
собственно сама задача : поиск первого вхождения строки s1 в строку s , выход - указатель на первый символ с s1 в s. Если s1 не входит в s - результат функции - NULL.
буду очень благодарен если ктото сможет помочь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2011, 21:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос создать функцию для работы с строковыми переменными без использования библиотеки <string.h> (C++):

Работа со строковыми переменными без использования string.h - C++
Нужно заменить в строке s множественные последовательности вхождений символа t на один. То есть &quot;aaabcde&quot; заменяется на &quot;abcde&quot;. Существует...

Функция atoi, без использования библиотеки string - C++
функции atoi, без использования библиотеки string

Задача со строками без использования библиотеки string.h - C++
Дана непустая строка S. Вывести на экран Эту же строку S, но с пробелами между символами.

Добавить 3 переменные в массив char без использования библиотеки string - C++
задача такая: есть 3 переменные, которые вводит пользователь адрес сервера, юзер, сообщение. нужно запихнуть их в массив char без...

Как сделать замену слова в строке без использования функций библиотеки string? - C++
вводится строка =&gt; вводится слово, которое нужно заменить(если оно есть в строке)=&gt; вводится слово на которое нужно заменить

Создать функцию вычисления степени числа с показателем (без использования функции pow) - C++
Создать функцию вычисления степени натурального числа с натуральным показателем (без использования функции pow) и вычислить с ее помощью...

6
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,864
18.07.2011, 21:14 #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;
}
1
kolaider
0 / 0 / 0
Регистрация: 15.07.2011
Сообщений: 2
18.07.2011, 21:27 #3
ого ! вот так да ...спасибо большое
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
18.07.2011, 22:01 #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;
}
1
grizlik78
Эксперт С++
1972 / 1465 / 122
Регистрация: 29.05.2011
Сообщений: 3,033
18.07.2011, 22:11 #5
Цитата Сообщение от xAtom Посмотреть сообщение
Если брать точность стандартной функцией то нужно возвращать константный указатель да и ладно, кто будет в область памяти писать для чтения.
Если честно, то я до конца так и не понял мысль. Но стандартная функция возвращает указатель на неконстантную строку.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,864
18.07.2011, 23:05 #6
Цитата Сообщение от xAtom Посмотреть сообщение
Если брать точность стандартной функцией
Если честно, я вообще ничего не понял, но вот на всякий случай:
man strstr
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
19.07.2011, 06:57 #7
Цитата Сообщение от xAtom
Если брать точность стандартной функцией то нужно возвращать константный указатель да и ладно, кто будет в область памяти писать для чтения.
делай приведение возле return
в C использование модификаторов типа в возвращаемом значении функции - неопределённое поведение
1
19.07.2011, 06:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 06:57
Привет! Вот еще темы с ответами:

Работа с файлом без использования библиотеки cstdio - C++
Добрый день! Было дано задание: создать файл и работать с ним без использования библиотеки cstdio. Если есть какие-то идеи, прошу...

Можно ли создать в C++ ограниченную переменную (для экономии памяти) без использования классов - C++
Например, переменную, скажем, test, которая принимает значение в диапазоне (-180..+180)

Работа со строковыми переменными - C++
Поиск позиции N-го вхождения символа C в строке s. Если такой количества вхождений нет - функция должна вернуть значение -1. ...

Преобразование char в int без использования функций библиотеки С - C++
Собственно САБЖ имеется переменная char c='123'; требуется поместить ее в целочисленную переменную например int k; так чтобы в нее...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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