Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2012, 10:02   #1
miftayka
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 17
По умолчанию strtok

Здравствйте. Программа - аналог strtok.
Код:
#include <iostream>
#include <cstdlib>
using namespace std;

char *mystrtok(char *buf, const char *delim)
{
        static char *H, *T, *R;
        if (buf)
        {
                H = buf;
                T = H + strlen(H);
                for (R = H; R < T; ++R)
                        if (strchr(delim, *R))
                                *R = 0;
        }
        while (! *H && H < T)
                ++H;
        if (H >= T)
                return NULL;
        else
        {
                R = H;
                H += strlen(H);
        }
        return R;
}
void main()
{

	char *p;
	p=mystrtok("Травка зеленеет, солнышко блестит",",");
	cout<<p<<endl;
	do
	{
		p = mystrtok(NULL, ",");
		if(p) cout<<p<<endl;

	}while (p);

	system("pause");
}
На строке
Код:
*R = 0;
программа вылетает с ошибкой:
Код:
Необработанное исключение в "0x00271533" в "Project11.exe": 0xC0000005: Нарушение прав доступа при записи "0x00277847".
Если заменить мою функцию на strtok, то тоже вылетает с такой ошибкой. Не могу понять: в чем дело?
miftayka вне форума Ответить с цитированием
Старый 22.05.2012, 12:23   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас строка которую нельзя изменять.
а должна быть не постоянной.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.05.2012, 12:53   #3
miftayka
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
у вас строка которую нельзя изменять.
а должна быть не постоянной.
Имеете ввиду
Код:
char *str="Травка зеленеет, солнышко блестит";
	p=mystrtok(str,",");
? Так с той же самой ошибкой вылетает.
miftayka вне форума Ответить с цитированием
Старый 22.05.2012, 13:10   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

miftayka

Так с той же самой ошибкой вылетает.

потому что ты её не исправил/а/о.

char str[] = "...";
Rififi вне форума Ответить с цитированием
Старый 22.05.2012, 13:21   #5
miftayka
Пользователь
 
Регистрация: 09.05.2010
Сообщений: 17
По умолчанию

Спасибо за помощь. Тему можно считать закрытой.
miftayka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
strtok Aleks2215 Общие вопросы C/C++ 9 25.04.2012 16:30
strtok Matr1x Общие вопросы C/C++ 5 18.02.2012 20:34
strtok Lotles Общие вопросы C/C++ 4 21.12.2011 21:04
strtok... Joe_Tribbiani Общие вопросы C/C++ 0 02.05.2010 15:52
си. strtok. RZMTZM Общие вопросы C/C++ 2 05.01.2010 12:59