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

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

Войти
Регистрация
Восстановить пароль
 
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
#1

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

01.05.2014, 01:36. Просмотров 621. Ответов 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
#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 меняет, потом занес в функцию, и результат тот же, и я же передаю указателем а не ссылкой, получается передается копия? Или я чего-то не понимаю, помогите а то уже совсем запутался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2014, 01:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операция с функцией strtok_s (C++):

strtok_s - C++
В отличие от strtok в нем есть еще одна переменная context. Для чего она?

Функция strtok_s - C++
Чем она отличается от strtok, и что значит третий аргумент в ней () Например, в этом примере // ConsoleApplication2.cpp: определяет...

Strtok и strtok_s - C++
Доброго времени суток. Есть вот такой код: Info::Info(ifstream &amp;f) { char STR=&quot;&quot;; char *delim = &quot;\t&quot;; char *ptr; ...

C++ strtok_s ломается в конце строки - C++
Здравствуйте уважаемые программисты, у меня проблема следующего содержания. Когда отдаю строку из файла, т.е. с \n и \0 он на последнем...

Объявление третьей переменной в функции strtok_s - C++
Вот кусок кода: char **context; char *pch = strtok_s(str_text, &quot; ,.&quot;, &amp;context); //во втором параметре указаны разделители...

strtok_s где можно посмотреть сам принцип функции - C++
на этой странице http://translate.google.com/translate?langpair=auto%7Cru&amp;u=http://msdn.microsoft.com/en-us/library/ftsafwz3.aspx ...

2
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
01.05.2014, 01:43 #2
Цитата Сообщение от D_Ok Посмотреть сообщение
получается передается копия?
нет
ссылка - это по сути тот же указатель, над которым выполнили разыменование
0
nmcf
5348 / 4668 / 1561
Регистрация: 14.04.2014
Сообщений: 18,582
01.05.2014, 08:11 #3
Из описания функции: "Each call modifies strToken by substituting a NULL character for the first delimiter that occurs after the returned token."
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2014, 08:11
Привет! Вот еще темы с ответами:

2012 strtok не работает и выдается ошибка, что требуется strtok_s - C++
Проблема в том, что в 2012-ом strtok не работает и выдается ошибка типо нужно strtok_s. Ввожу strtok_s, а это уже абсолютно другая функция,...

операция <<::>> - C++
имею код char Car::*Get_Marka(){ return marka ; } char Car::*Get_Color() { return color ; } bool Car::Get_Rastamojena() { return...

Условная операция - C++
можно ли зделать такое условие с помощью условной операции (тернарного оператора)? if ((x+n)&lt;0 || sin(z)&lt;0) { ...

Операция new в структурах - C++
Недавно начал изучать С++ и уже первые &quot;трудности&quot; :) Вот задание: 7. Вильям Вингейт (William Wingate) заведует службой анализа рынка...


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

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

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