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

Работа со строками - прокомментировать код - C++

Восстановить пароль Регистрация
 
vlad135642
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 11
06.12.2010, 01:22     Работа со строками - прокомментировать код #1
На просторах интернета нарыл данную прогу :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <locale>
#include <ctype.h>
 
int main()
{
char s[] = "this ais the testa for acid burn: star, anna";
char *delimiters = " :,.";
char *result = NULL;
result = strtok(s, delimiters);
while(result) 
{
if(result[0] == 'a') 
printf("%s ", result);
result = strtok(NULL, delimiters);
}
_getch();
}
Меня очень интересует логика этой проги , особенно функция strtok . Можете , пожалуйста , откомментить данную прогу . Заранее благодарен .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2010, 01:22     Работа со строками - прокомментировать код
Посмотрите здесь:

Работа с указателями - прокомментировать код C++
C++ Работа со строками - разобрать код
C++ Прокомментировать код
C++ Прокомментировать код
C++ Прокомментировать код
C++ Прокомментировать код
Работа с файлами. Прокомментировать код C++
Прокомментировать код C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.12.2010, 10:52     Работа со строками - прокомментировать код #2
strtok - string tokens
разделяет строку s на лексемы, разделённые любым символом из delimeters
strtok производит изменение строки, превращая разделители в строке в нуль-символы
когда неразделителей в строке не остаётся, она возвращает NULL

проблемы со strtok() начинаются, когда хочешь две строки одновременно нарезать, так как она хранит что-то вроде статического указателя внутри

Добавлено через 5 минут
C
1
2
3
4
5
6
    result = strtok(s, delimiters);
    while (result) {
        if (result[0] == 'a')
            printf("%s ", result);
        result = strtok(NULL, delimiters);
    }
пока в строке s есть слова, брать слово
брать первую букву слова
если первая буква - 'a', выводить слово

NULL в strtok() означает продолжать работать с той же строкой
Yandex
Объявления
06.12.2010, 10:52     Работа со строками - прокомментировать код
Ответ Создать тему
Опции темы

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