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

Ошибка с strtok - как исправить? - C++

Восстановить пароль Регистрация
 
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
16.04.2013, 00:09     Ошибка с strtok - как исправить? #1
Вот например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
using namespace std; 
void main ()
{ 
char text[]="gh.gh.g hghgh o3 jf7 fk., fj", *text1, *text2;
 
   text1=strtok(text, " ");  \\здесь text1 должно принимать значение gh.gh.g - собственно все правильно получается
                                        
    text2=strtok(text1, ".");   \\text2 становится gh - пока все правильно 
    cout<<text2;
    while(text2!=NULL)                      \\после выполнения цикла должно вывестись ghghg - собственно выводится
    {text2=strtok('\0', "."); cout<<text2;   \\ и выскакивает ошибка
    }
 
}
Как избавиться от ошибки? Потому что после вывода ghghg мне нужно дальше работать в программе

Добавлено через 17 минут
while(text2!=NULL)
Не понимаю вот какое условие здесь нужно поставить, чтобы правильно работало?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2013, 00:09     Ошибка с strtok - как исправить?
Посмотрите здесь:

Ошибка, не знаю как исправить C++
C++ Builder Невозможно преобразовать AnsiString в int
ошибка подскажите как исправить!! C++
C++ Непонятная ошибка с вызовом strtok
C++ в чём ошибка и как ёё исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.04.2013, 00:16     Ошибка с strtok - как исправить? #2
Дело в том, что strtok у вас возвращает 0, и cout не может его напечатать

Добавлено через 2 минуты
И ghghg после цикла точно никак не выведется, потому что strtok сначала изменил пробел на '/0' в исходной строке, а потом точку
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
16.04.2013, 00:16  [ТС]     Ошибка с strtok - как исправить? #3
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Дело в том, что strtok у вас возвращает 0, и cout не может его напечатать
В самом деле заработало без cout, но мне надо как-то это вывести, что можно сделать?
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
16.04.2013, 00:18     Ошибка с strtok - как исправить? #4
Можно перед выводом проверять, равен ли указатель 0

C++
1
if (text2) cout<<text2;
Yandex
Объявления
16.04.2013, 00:18     Ошибка с strtok - как исправить?
Ответ Создать тему
Опции темы

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