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

ѕеревод из int в char* внутри функции работает, а если вернуть строку то нет - C++

¬осстановить пароль –егистраци€
 
shinarthas
0 / 0 / 0
–егистраци€: 06.12.2013
—ообщений: 30
22.12.2013, 00:01     ѕеревод из int в char* внутри функции работает, а если вернуть строку то нет #1
Ќадо перевесит int в char* в методе класса, и вернуть char*.
ѕерепробовал кучу всего результат 1 и тот же.
boss.cpp
C++
1
2
3
4
5
6
7
8
9
char* boss::getitem()
{
    int radix = 10;  //система счислени€
    char buffer[20]; //результат
    char *p;  //указатель на результат
    p = itoa(podc,buffer,radix);
    //если тут будет cout все будет норм 
        return p;
}
фактически это гетер.

queue.cpp
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
void queue::save()
{
 
    int value;
    FILE *Ptr;
 
    Ptr=fopen("kadrs.txt","w");// что бы продолжать записть помен€ть w  на w+
    char danila[100];//куда ж без этого?
 
    if (    typeid(*data)==typeid(boss) )
        fprintf(Ptr,"%s","1");
    if (    typeid(*data)==typeid(engeneer) )
        fprintf(Ptr,"%s","0");
 
        fprintf(Ptr,"%s","\n");
        fprintf(Ptr,"%s",data->getitem());
        fprintf(Ptr,"%s","\n");
        strcpy( danila, (data->getname()).c_str()); //криво но мен€ть все долго
        fprintf(Ptr,"%s",danila);
        fprintf(Ptr,"%s","\n");
        fprintf(Ptr,"%d",data->getage());
        fprintf(Ptr,"%s","\n");
 
 
    fclose(Ptr);
 
}
“ут € использую абстрактные классы и хочу их записать в файл.
»тог если p=22;(до того как € его вернул), то в kadrs.txt нечего нет (речь о "p" а не о kadrs.txt в целом ).
Ќу или же p= ћћћШш ; если:

C++
1
2
3
4
5
6
7
char* boss::getitem()
{
    char a[10];
    int b = 12;
    *a = (char)podc;
    return a;
}
ƒобавлено через 5 минут
может кому пригодитс€
boss.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
using namespace std;
class boss : virtual public kadr
{    
    int podc; // людей в подчинении
    public:
        //конструкто и диструктор
        boss(){}
        boss ( int p,string n,int a):kadr(n,a)
    {
        podc=p;
    };
        ~boss();
        virtual void show();    
        virtual char* getitem();    
};
Similar
Ёксперт
41792 / 34177 / 6122
–егистраци€: 12.04.2006
—ообщений: 57,940
22.12.2013, 00:01     ѕеревод из int в char* внутри функции работает, а если вернуть строку то нет
ѕосмотрите здесь:

C++ ѕеревод из int в char
перевод из char в int C++
C++ ћассив char + перевод в int
ѕеревод массива из char в int C++
ѕеревод из char в int C++
ѕеревод int и double в char* C++
C++ ѕеревод *char в int[] c++
C++ ѕеревод char в int

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

»ли воспользуйтесь поиском по форуму:
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Ёксперт C++
4378 / 3221 / 297
–егистраци€: 19.02.2013
—ообщений: 9,044
22.12.2013, 00:58     ѕеревод из int в char* внутри функции работает, а если вернуть строку то нет #2
shinarthas, возвращаетс€ указатель на локальный массив buffer, который будет уничтожен при выходе из функции getitem. Ћибо надо передавать в getitem ранее выделенный буфер, либо выдел€ть внутри getitem пам€ть динамически.
Yandex
ќбъ€влени€
22.12.2013, 00:58     ѕеревод из int в char* внутри функции работает, а если вернуть строку то нет
ќтвет —оздать тему
ќпции темы

“екущее врем€: 06:58. „асовой по€с GMT +3.
 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
–ейтинг@Mail.ru