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

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

Войти
Регистрация
Восстановить пароль
 
karina.spir
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 7
#1

Функции <string.h> - C++

05.12.2011, 21:23. Просмотров 647. Ответов 6
Метки нет (Все метки)

Привет!

Хочу сделать такую штуку: есть строка. Надо найти в ней все знаки ". ! ?" и букву, идущую после любого из этих знаков, сделать прописной. Надо сделать с использованием функций из библиотеки <string.h>.

Заготовка:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
int main()
{
    char str[] = "aaa.bbb.Ccc.ddd!v.";
    char key[] = ",;";
    char *p;
    p = strpbrk(str,key);
    while(p)
    {
        //???
        p = strpbrk(p+1, key);
               
    }   
    return 0;
}
Я так понимаю, strpbrk(...) возвращает первое вхождение символа из key. Но мне не совсем понятно, как мне работать с этим вхождением. Т.е. не понятно, как определить, на какой именно позиции находятся символы из key. Если знаю позицию, значит, могу работать с str[i], где i и есть та самая позиция.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 21:23     Функции <string.h>
Посмотрите здесь:

string и функции - C++
Хотел написать программу, вводишь одно из трех слов, программка сравнивает его с тем что уже хранится в памяти и выводит ответ. но...

Не выводит string из функции - C++
Доброго времени суток! Задание, используя string перевернуть строку. Может кто-то подсказать, почему функция не возвращает...

Стандартные функции String.h - C++
Здравствуйте, подскажите пожалуйста стандартные функции стринга в с++. Нужно определить количество вхождений заданного знака в строку....

стандартные функции библиотеки <string.h> - C++
Здравствуйте, товарищи порграммисты :gsmile: Помогите, пожалуйста, с написанием програмки на языке C . Дано: символьная строка...

Как вернуть string из функции? - C++
Вот вам умные дяди скрин ковырялся я ковырялся так и не понял в чем касяк мб функцию надо по другому записывать или я даже не знаю делал...

String как параметр функции - C++
Подскажите, пожалуйста, что здесь не так. При компиляции выдаёт &quot;синтаксическая ошибка: идентификатор &quot;string&quot;&quot;. Пробовал убрать &lt;string&gt; и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
5946 / 3383 / 336
Регистрация: 28.10.2010
Сообщений: 5,927
05.12.2011, 21:32     Функции <string.h> #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
    char str[] = "aaa?bbb.Ccc.ddd!v.";
    char key[] = ".?";
    char *p = strpbrk(str, key);
    while (p)
    {
        *p = '!';
        p = strpbrk(str, key);
    }
    puts(str);
    system("pause");
    return 0;
}
karina.spir
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 7
05.12.2011, 21:43  [ТС]     Функции <string.h> #3
Петррр, Извините, пожалуйста, но я не совсем понимаю, что вы хотели сказать. Зачем разделять все слова восклицательными знаками?
Петррр
5946 / 3383 / 336
Регистрация: 28.10.2010
Сообщений: 5,927
05.12.2011, 21:46     Функции <string.h> #4
Цитата Сообщение от karina.spir Посмотреть сообщение
Но мне не совсем понятно, как мне работать с этим вхождением.
Получии указатель на определенной строке, и заменили символ.
Позицию можно получить так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
    char str[] = "aaa?bbb.Ccc.ddd!v.";
    char key[] = ".?";
    char *p = strpbrk(str, key);
    printf("Position: %d\n", p - str);
    system("pause");
    return 0;
}
karina.spir
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 7
05.12.2011, 21:49  [ТС]     Функции <string.h> #5
Ага, ясно.
А если мне нужно обработать не то, на что указывает указатель, а следующий символ?

C++
1
*(p+1)='!';
- так не работает.
Петррр
5946 / 3383 / 336
Регистрация: 28.10.2010
Сообщений: 5,927
05.12.2011, 22:06     Функции <string.h> #6
Цитата Сообщение от karina.spir Посмотреть сообщение
так не работает.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
    char s[] = "sample";
    char *d = "s";
    char *p = strpbrk(s, d);
    if (p && (p + 1))
        *(p + 1) = 'i';
    puts(s);
    system("pause");
    return EXIT_SUCCESS;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2011, 22:12     Функции <string.h>
Еще ссылки по теме:

Напишите все функции класса string!… - C++
Буду ждать ответов!А то достало уже туда сюда по книжке бегать!нужно чтобы было все в одном месте доступно и понятно!а то там не все...

Моя реализация функции перевода STRING в DOUBLE - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; double str_to_double(string a); int main() { string s =...

Как функции с char, переписать под string - C++
есть char *ptr; while(isspace(*ptr)) //пробел, возврат каретки, табуляция ? strchr(&quot;+-&quot;, *ptr) //поиск isalpha(*ptr) //буква...

Моя реализация функции перевода string в int - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int str_to_int(string a); int main() { string s =...


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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
05.12.2011, 22:12     Функции <string.h> #7
скорее так
C
1
if (p && *(p + 1))
Yandex
Объявления
05.12.2011, 22:12     Функции <string.h>
Ответ Создать тему
Опции темы

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