Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
1

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

28.04.2013, 13:29. Просмотров 469. Ответов 5
Метки нет (Все метки)

Я разбиваю строку на токены с помощью 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 копируется только первое слово, в чем проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 13:29
Ответы с готовыми решениями:

Использование STRTOK Разбить строку на слова, из слов составить список C++ Функция strtok
Задача Дана строка слов с разделителями, в данном примере слова с пробелами Нужно, используя...

Удаление строки strtok
Здравствуйте, дорогие друзья. Передо мной задача - удалить часть строки при помощи функции strtok....

Разбиение строки на токены: strtok
нужно чтобы программа разбивала строку с выражением, использую strtok например &quot;6+8+99-76-34&quot;...

Функция разделения строки на лексемы strtok
Программе на вход подается строка, содержащая слова один-девять плюс минус, наприм: один плюс два...

5
~ Эврика! ~
1253 / 1002 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 13:39 2
В том, что strtok() вставляет '\0' прямиком в исходную строку.
0
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
28.04.2013, 15:41  [ТС] 3
это понятно, но как мне сделать так чтобы копировались и другие слова
C++
1
2
3
4
5
char str2[40];
strcpy (str2,str);
 
 
  printf ("str2: %s\n",str2);
0
~ Эврика! ~
1253 / 1002 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 15:49 4
Копировать их в тот момент, когда strtok() возвращает указатель на начало следующего токена.
1
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 33
28.04.2013, 17:06  [ТС] 5
получилось, спасибо
есть еще вопрос как сравнить последнюю букву слова с первой буквой следующего слова
0
~ Эврика! ~
1253 / 1002 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 17:16 6
Вообще правильно вычислить длину предыдущего слова, чтобы узнать, где у него нужная буква. Естессно, надо помнить начала обоих слов. Можно попробовать схитрить и адресной арифметикой вернуться назад от первой буквы текущего слова, но strtok() ничего не говорит о том, что будет делать, когда идёт подряд несколько разделителей, так что такой вариант может не взлететь.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 17:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Функция strtok. Представление телефонного номера в виде строки.
Запутался в функции strtok. Причем уже сделал для неё пару упражнений, вроде понимаю как она...

Можно ли разбить строки на слова при strtok и обратиться к нужному слову?
Вот предположим есть какой-то текст fdjgd f.df dfdgwe wek eu fkkkk Предположим мне нужно...

C18 Функция Strtok - считывается только первое число строки
Добрый день. У меня возникла необходимость парсить большое количество строк и вычленять числа из...

Excel. Копирование столбца, при заполнении 22-й строки продолжить копирование в соседний столбец
Всем привет. Задача: Есть таблица Excel, заполнены 2 столбца, из них первый - порядковые номера,...


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

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

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