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

Копирование строки strtok - C++

Восстановить пароль Регистрация
 
FMihail
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
28.04.2013, 13:29     Копирование строки strtok #1
Я разбиваю строку на токены с помощью strtok
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
int main(int argc, char* argv[])
{
char str[] ="- This, a sample string.";
  char * p;
  printf ("Razdelenie stroki \"%s\" into tokens:\n",str);
  p = strtok (str," ,.-");
  while (p != NULL)
  {
    printf ("%s\n",p);
    p = strtok (NULL, " ,.-");
  }
        getch();
        return 0;
}
а когда начинаю копировать строку через strcpy копируется только первое слово, в чем проблема?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 13:39     Копирование строки strtok #2
В том, что strtok() вставляет '\0' прямиком в исходную строку.
FMihail
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
28.04.2013, 15:41  [ТС]     Копирование строки strtok #3
это понятно, но как мне сделать так чтобы копировались и другие слова
C++
1
2
3
4
5
char str2[40];
strcpy (str2,str);
 
 
  printf ("str2: %s\n",str2);
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 15:49     Копирование строки strtok #4
Копировать их в тот момент, когда strtok() возвращает указатель на начало следующего токена.
FMihail
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
28.04.2013, 17:06  [ТС]     Копирование строки strtok #5
получилось, спасибо
есть еще вопрос как сравнить последнюю букву слова с первой буквой следующего слова
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 17:16     Копирование строки strtok #6
Вообще правильно вычислить длину предыдущего слова, чтобы узнать, где у него нужная буква. Естессно, надо помнить начала обоих слов. Можно попробовать схитрить и адресной арифметикой вернуться назад от первой буквы текущего слова, но strtok() ничего не говорит о том, что будет делать, когда идёт подряд несколько разделителей, так что такой вариант может не взлететь.
Yandex
Объявления
28.04.2013, 17:16     Копирование строки strtok
Ответ Создать тему
Опции темы

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