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

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

Восстановить пароль Регистрация
 
karina.spir
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 7
05.12.2011, 21:23     Функции <string.h> #1
Привет!

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

Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
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
Петррр, Извините, пожалуйста, но я не совсем понимаю, что вы хотели сказать. Зачем разделять все слова восклицательными знаками?
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
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)='!';
- так не работает.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
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 в DOUBLE C++
Как вернуть string из функции? C++
Как функции с char, переписать под string C++

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

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

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