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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Maskca
1 / 0 / 0
Регистрация: 15.12.2008
Сообщений: 97
#1

Что то не то с функцией strtok!!! - C++

19.12.2009, 18:11. Просмотров 1498. Ответов 5
Метки нет (Все метки)

Вот есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<string.h>
#include<iostream.h>
 
int main()
{
char *string1 = "sdfsdf sdfs gjhg 1 h5jj";
char *string2 = "sdfsd sdfsde ghg 2 hjj";
 
string1 = strtok(string1," ");
string2 = strtok(string2," ");
 
while (string1){
 
string1 = strtok(NULL," ");
 
 
cout<<string1<<endl;
 
}             
 
}
Почему, когда я вывожу string1 после прохождения через функцию strtok мне выводит строку string2 прошедшую через функцию strtok?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2009, 18:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что то не то с функцией strtok!!! (C++):

Как правильно пользоваться функцией strtok - C++
Как правильно пользоваться етой ф-цией? Набросал код, надо пока разбить строку на слова(ф-ция int lek). #include &lt;iostream&gt; #include...

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

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

Что не так с функцией? - C++
#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;Windows.h&gt; using namespace std; void sravn(char s); void main() { ...

Что не так с функцией? - C++
MASSIVE ME(MASSIVE X) { MASSIVE Z,C; int i; char Q; int N; X.EXIT(); C.n = X.n; for (i = 1; i &lt;= C.n; i++) {

что за ошибка с функцией POW - C++
s=s+(pow(x,4*n+1)/4*n+1); что не так Добавлено через 1 минуту все ясно,надо было цифры как double,или float объявлять

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
19.12.2009, 18:17 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<string.h>
#include<iostream.h>
 
int main()
{
char *string1 = "sdfsdf sdfs gjhg 1 h5jj";
char *string2 = "sdfsd sdfsde ghg 2 hjj";
 
string1 = strtok(string1," ");
//string2 = strtok(string2," ");
 
while (string1){
 
string1 = strtok(NULL," ");
 
 
cout<<string1<<endl;
 
}
0
Maskca
1 / 0 / 0
Регистрация: 15.12.2008
Сообщений: 97
19.12.2009, 18:21  [ТС] #3
а мне нужно две строки обработать, тоисть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<string.h>
#include<iostream.h>
 
int main()
{
char *string1 = "sdfsdf sdfs gjhg 1 h5jj";
char *string2 = "sdfsd sdfsde ghg 2 hjj";
 
string1 = strtok(string1," ");
string2 = strtok(string2," ");
 
while (string1&&string2){
 
string1 = strtok(NULL," ");
string2 = strtok(NULL," ");
 
cout<<string1<<endl;
cout<<string2<<endl;
 
}             
 
}
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
19.12.2009, 18:24 #4
одновременно не выйдет.., нужно по очереди их обрабатывать.
0
Maskca
1 / 0 / 0
Регистрация: 15.12.2008
Сообщений: 97
19.12.2009, 19:51  [ТС] #5
А что можно сделать если мне нада проверить наличие слова из одной строки в другой с помощью функции strstr
0
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
19.12.2009, 20:31 #6
Это тот случай, когда лучше самоделки использовать.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define WRDSIZ 255
 
/* указатель на следующее слово в строке, или 0, если слова кончились */
 
char *nextWord(char *str){
        char *p;
        for ( p = str; *p != '\0' && !isspace(*p) && !ispunct(*p); p++ )
                ;
 
        if ( *p == '\0' )
                return NULL;
 
        while ( isspace(*p) || ispunct(*p) )
                p++;
 
        return ( *p == '\0' ) ? NULL : p;
}
 
/* 
*   возвращает одно слово из строки str в буфере wrd. динна wrd = len - 1
*   в случае неудачи вернёт NULL
*/
 
char *getWord(const char *str, char *wrd, size_t len){
    char *p;
    char *w;    
 
    for ( p = (char *)str, w = wrd;  *p != '\0' && !isspace(*p) && !ispunct(*p) && --len > 0; p++, w++ )
        *w = *p;
    *w = '\0';
 
    return wrd;
}
 
/* поиск слова из одной строки в другой */
 
 
int main(void){
    char str1[BUFSIZ], str2[BUFSIZ], wrd1[WRDSIZ], wrd2[WRDSIZ], *p, *pstr1, *pstr2;
    
    while ( 1 ){
        printf("First: ");
        if ( !fgets(str1, BUFSIZ, stdin) )
            exit(1);
        if ( p = strrchr(str1, '\n') )
            *p = '\0';
        if ( !*str1 )
            exit(0);
        printf("Second: ");
        if ( !fgets(str2, BUFSIZ, stdin) )
            exit(1);
        if ( p = strrchr(str2, '\n') )
            *p = '\0';
        if ( !*str2 )
            exit(0);
            
        for ( pstr1 = str1; pstr1 != NULL; pstr1 = nextWord(pstr1) ){
            getWord(pstr1, wrd1, WRDSIZ);
            for ( pstr2 = str2; pstr2 != NULL; pstr2 = nextWord(pstr2) ){
                getWord(pstr2, wrd2, WRDSIZ);
                if ( !strcmp(wrd1, wrd2) )
                    printf("%s\n", wrd1);
            }
        }
        printf("\n");
    }
    
    exit(0);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2009, 20:31
Привет! Вот еще темы с ответами:

Что не так с функцией RemoveToRight? - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;time.h&gt; class Position { public: int x, y; }; void PrintMap(int myMap);...

Проблемма с функцией,подскажите что не так - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cmath&gt; using namespace std; void input (double x,...

Что в приведенном ниже фрагменте кода не является функцией? - C++
int t1( int x ) { if ( x &gt; 0 ) return f1( x ); printf ( “%d”, x ); return x; } Варианты ответов? 1. printf

Что вернуть по ссылке, если объект функцией поиска не найден? - C++
Здравствуйте всем! Имеется проблема: приведенная ниже функция ищет элемент (объект класса TreeNode) в бинарном дереве (объект класса...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.12.2009, 20:31
Ответ Создать тему
Опции темы

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