Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 20:09   #1
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию Использование строки в типе возвращаемого значения.

Здравствуйте. У меня не получается с функции передать значение строки. В моём коде в функции число преобразуется в строку и эта строка должна быть возвращена в программу. Не работает, помогите, может чего исправить.
p.s. То что я возвращаю указатель, то это я знаю. Как возвратить строку?
Код:
#include "stdafx.h"
#include <iostream>

char* fun (int x)
{
char s[10] ;
_itoa(x,s,10);
std::cout<<s<<'\n'; // выводит 454664
return (s);
}

int _tmain(int argc, _TCHAR* argv[])
{
    int a=454664;
	char* text;
	text = fun(a);
	std::cout<<*text<<'\n'; // выводит 4
	system ("PAUSE");
	return 0;
}
kuy вне форума Ответить с цитированием
Старый 12.05.2012, 20:20   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Ну, все правильно. text - указатель на строку, т.е. на первый символ. *text - сам первый символ.
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 12.05.2012, 20:29   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
std::cout<<*text<<'\n'
Как вариант - выводи в цикле посимвольно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2012, 20:42   #4
tmtm
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 20
По умолчанию

Выделяй память под строку s динамически и возвращай на нее указатель
tmtm вне форума Ответить с цитированием
Старый 12.05.2012, 21:49   #5
srh
 
Регистрация: 12.05.2012
Сообщений: 4
По умолчанию

странно, что он выводит 4.

Код:
char* fun (int x)
{
char s[10] ;
_itoa(x,s,10);
std::cout<<s<<'\n'; // выводит 454664
return (s);
}
переменная s - локальная, после выхода из функции она удаляется, и программа получает указатель на удаленную переменную.
Как решить - см. пост выше (операторы new и delete)
srh вне форума Ответить с цитированием
Старый 12.05.2012, 21:59   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

kuy

судя по приведенному фрагменту программы, налицо сурьезные пробелы в базовых знаниях. лечится чтением учебника по C/C++
Rififi вне форума Ответить с цитированием
Старый 13.05.2012, 00:52   #7
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Выделил память динамически, работает.
Код:
#include "stdafx.h"
#include <iostream>

char* fun (int x)
{
char *s = new char[10];
_itoa(x,s,10);
std::cout<<s<<'\n'; // выводит 454664
return (s);
}

int _tmain(int argc, _TCHAR* argv[])
{
    int a=454664;
	char* text;
	text = fun(a);
	std::cout<<text<<'\n'; // выводит 454664
	system ("PAUSE");
	return 0;
}
kuy вне форума Ответить с цитированием
Старый 13.05.2012, 11:42   #8
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Освобождать память кто будет?
std::string использовать религия не позволяет?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не извлечь переменные из массива возвращаемого через AJAX Benderbej JavaScript, Ajax 2 07.02.2012 20:02
как занести получ значения в другой массив и использование рандомайза adeptt Паскаль, Turbo Pascal, PascalABC.NET 0 26.10.2011 23:14
тип возвращаемого значения функции sqrt SAMOUCHKA Помощь студентам 2 20.09.2011 19:00
Использование значения Edit в функции. sashaslam Общие вопросы Delphi 3 20.04.2010 16:24
случайные значения, использование функции rand() Matr1x Общие вопросы C/C++ 3 10.02.2010 11:02