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

Операция с функцией strtok_s - C++

Восстановить пароль Регистрация
 
D_Ok
43 / 32 / 12
Регистрация: 11.02.2014
Сообщений: 134
01.05.2014, 01:36     Операция с функцией strtok_s #1
Кликните здесь для просмотра всего текста
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
#include <iostream>
void Token(char *, int &, char *, char *);
int main()
{
    using namespace std;
    char *str = new char[255];
    char *word=NULL;
    char *token=NULL;
    int words = 0;
    cin.getline(str,255, '.'); // вводим Hello world.
    cout << str << endl; // вывод Hello world
    Token(str, words, token, word);
    cout << str << endl; // вывод Hello
    return 0;
}
void Token(char *str, int &words, char *token, char *word)
{
    word = strtok_s(str, " ,.!?\n\t", &token);
    while (word != NULL)
    {
        words++;
        word = strtok_s(NULL, " ,.!?\n\t", &token);
    }
}

После отработки функции Token, меняется строка str, почему такое происходит? Я думал что strtok_s не меняет саму строку, сначала сделал в мейне, думал из-за strtok_s меняет, потом занес в функцию, и результат тот же, и я же передаю указателем а не ссылкой, получается передается копия? Или я чего-то не понимаю, помогите а то уже совсем запутался.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 01:36     Операция с функцией strtok_s
Посмотрите здесь:

C++ операция <<::>>
C++ операция switch
Функция strtok_s C++
C++ strtok_s
операция присваивания C++
strtok_s где можно посмотреть сам принцип функции C++
Strtok и strtok_s C++
C++ 2012 strtok не работает и выдается ошибка, что требуется strtok_s

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
01.05.2014, 01:43     Операция с функцией strtok_s #2
Цитата Сообщение от D_Ok Посмотреть сообщение
получается передается копия?
нет
ссылка - это по сути тот же указатель, над которым выполнили разыменование
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,579
01.05.2014, 08:11     Операция с функцией strtok_s #3
Из описания функции: "Each call modifies strToken by substituting a NULL character for the first delimiter that occurs after the returned token."
Yandex
Объявления
01.05.2014, 08:11     Операция с функцией strtok_s
Ответ Создать тему
Опции темы

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