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

strtok - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Трудности с SendMessage http://www.cyberforum.ru/cpp-beginners/thread714985.html
Есть такой вот код: //Autor Anonim #include <conio.h> #include <iostream> #include <ostream> #include <Windows.h> #include <WinUser.h> #include <clocale> using namespace std;
C++ Не могу понять в чем ошибка #include<stdio.h> #include<math.h> #include<conio.h> int main(){ double a,b,c; double x1,x2,D,x; printf("Enter a b c for space:"); scanf("%lf %lf %lf",&a,&b,&c); D=b*b-4*(a*c); printf("\nD=%lf",D); http://www.cyberforum.ru/cpp-beginners/thread714967.html
Как создать клас Fraction C++
класс фракшион
Задача по ООП Рыбки в озере C++
Сам я в программировании полный ноль так что прошу помощи что бы разобраться хоть как то со всем этим. Нужно написать программу результатом которой будет изображено озеро и два вида рыб: щуки и караси. Рыбки плавают и если щука близко подплывает к карасю то его съедает. Как я понимаю код можно разделить на части: описание класса озеро, рыбки, щука, карась и описание того как они ведут себя....
C++ Указатель на шаблон функции http://www.cyberforum.ru/cpp-beginners/thread714946.html
Доброй ночи всем! Есть шаблон функции сравнения двух чисел: template <typename _Tp> bool comp(_Tp & a, _Tp & b) { return (a >= b)? 1 : 0; } Задание звучит так:
C++ Свойства наследования 1) Объект класса-потомка может вызывать некоторые методы класса-предка. 2) Наследование - это механизм получения нового класса на основе уже существующего. 3) Статические переменные не наследуются. 4) При создании объекта класса-потомка память для хранения private-переменных класса-предка не выделяется. 5) Объявления friend не наследуются. 6) Класс, от которого наследуются называется... подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.12.2012, 07:23     strtok
Привет!
Решаю задачку на строки char. Возникла проблема вот код:
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
75
76
77
78
//vuravnivanie slov po levomy i pravomy pol9m stranicu
 
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
#include <cstring>
using std::strlen;//return kolichestvo simvolov do zavershayuchego simvola
using std::strcat;//konkatenaci9 tipov char
using std::strtok;//razbivaet stroky na leksemu
using std::strcmp;//sravnivaet dve stroki
 
int main()
{
    char s[300]="1 to be, or not to be: that is\n2. the question: Whether 'tis nobler\n3. in the mind to suffer";
    char *leksema;
    int dob_sim[100]={0};
    char *str[100];
    for(int i=0;i<100;i++)
        str[i]=NULL;
    
    int b=0;
    leksema=strtok(s,"\n");
    while(leksema!=NULL)
    {   
        int count=0;
        for(int i=0;leksema[i]!='\0';i++)
        {
            count++;
        }
        dob_sim[b]=65-count;
        str[b]=leksema;
        b++;
        leksema=strtok(NULL,"\n");
    }
    for(int i=0;i<3;i++)
    {
        cout <<"str["<<i<<"]= "<<str[i]<<endl;
        cout <<"dob_sim["<<i<<"]= "<<dob_sim[i]<<endl;
    }
    
    char *str1[100];
    for(int i=0;i<100;i++)
        *(str1+i)=*(str+i);
    
    for(int i=0;i<3;i++)
    {
        cout <<"str1["<<i<<"]= "<<str1[i]<<endl;
        cout <<"str["<<i<<"]= "<<str[i]<<endl;
    }
    cout <<"&str[0]= "<<&str[0]<<" &str1[0]= "<<&str1[0]<<endl;
    cout <<"*str= "<<*str<<" *str1= "<<*str1<<endl;
    for(int i=0;i<3;i++)
    {
        leksema=strtok(str1[i]," ");
        while(leksema!=NULL)    
        {
            cout <<"leksema= "<<leksema<<endl;
            leksema=strtok(NULL," ");
        }
        
    }
    
    for(int i=0;i<3;i++)
    {
        cout <<"str1["<<i<<"]= "<<str1[i]<<endl;
        cout <<"str["<<i<<"]= "<<str[i]<<endl;
    }
    
    
    
 
    
    
    
    return 0;
}
код работает без ошибок но почему то неправильно.
есть 2 переменные char *str[100] и char *str1[100];
в них содержатся одинаковые данные;
выводятся как положено;
после того как я прогоняю функцию strtok;
leksema= strtok(str1[i]," ");
у меня чото и в str меняются значения?; спрашивается почему?;
ведь char *str1[100] и *char * str[100]; это указатели на разные адреса памяти;
в них хранятся абсолютно разные значения;
при изменении str1 допустим str1[0]="kkk" значение в str[0] не меняется проверял.
Но при использовании функции strtok(str1[0]," ") почему то меняется и str[0];
В чем проблема не могу никак разобраться хелп!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru