Vrácení stringu z funkce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vrácení stringu z funkce – C / C++ – Fórum – Programujte.comVrácení stringu z funkce – C / C++ – Fórum – Programujte.com

 

xp
~ Anonymní uživatel
401 příspěvků
31. 3. 2009   #1
-
0
-

zdravim, mohl by mi nekdo pomoct jak, vratit text z funkce?

#include<conio.h>


void funkce(char *text)
{
char *temp="ahoj jak se mas";
text = temp;
}
int main()
{
char *text2;
funkce(text2);
cprintf("%s",text2);
getch();
return 0;
}

Nahlásit jako SPAM
IP: 90.178.135.–
dannyk0
Věrný člen
31. 3. 2009   #2
-
0
-

No jestli mas na mysli vraceni primo a ne pres vystupni promennou, tak se to dela takto:



char *funkce()
{
char *temp="ahoj jak se mas";
return temp;
}

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
jouda
~ Anonymní uživatel
53 příspěvků
31. 3. 2009   #3
-
0
-

Myslim, ze se XP snazil naznacit predani pres ukazatel...

#include <iostream>

using namespace std;

void funkce(char **text);

int main(int argc, char* argv[])
{
char *vracenyText;

funkce(&vracenyText);

cout << vracenyText;

return 0;
}

void funkce (char **text)
{
*text = "Jak se mas?";
}

Nahlásit jako SPAM
IP: 212.20.106.–
xp
~ Anonymní uživatel
401 příspěvků
31. 3. 2009   #4
-
0
-

to jouda: ano presne takhle jsem to myslel, zkousel jsem ruzne kombinace, ale dat tam dve hvezdicky me nenapadlo, diky moc

Nahlásit jako SPAM
IP: 147.229.64.–
joudicek0
Návštěvník
31. 3. 2009   #5
-
0
-

To xp :

char * pole;	// ukazatel na pole charu - zjednodusene retezec

char **pole; // ukazatel na (ukazatel na pole charu) - zjednodusene ukazatel na retezec

Nahlásit jako SPAM
IP: 212.20.106.–
MaS0
Návštěvník
31. 3. 2009   #6
-
0
-

možná se pletu, ale nemělo by se to místo na ten řetězec nejdřív alokovat a pak až do něj něco uložit (což jouda ani dannyk podle mě neudělali).....např.

#include <iostream>

#include <cstring>

using namespace std;

char* funkce(char** text) {
int delka=strlen(*text);
char* ukazatel=new char[delka+1];
strcpy(ukazatel, *text);
ukazatel[delka]='\0';
*text="dalsi text";
return ukazatel;
}
int main(){
char *pole="nejaky text";
char* text=funkce(&pole);
cout << text;
cout << pole;
return 0;
}
což vrátí ukazatel a do parametru uloží jiný text z fce...

Nahlásit jako SPAM
IP: 195.146.114.–
bukaj_0010
Věrný člen
31. 3. 2009   #7
-
0
-

MaS
možná se pletu, ale nemělo by se to místo na ten řetězec nejdřív alokovat a pak až do něj něco uložit
Alokovat musíš jedině tehdy, když potřebuješ s řetězcem manipulovat na místě. Tzn. že když oni tam jenom přiřadí jiný řetězec, žádná alokace není potřeba, protože řetězec už dávno byl alokován (pokud je natvrdo zapsaný v kódu tak je alokovaný na začátku haldy, těsně za sekcí se spustitelným kódem), akorát mění hodnotu ukazatelu.

Když si odmyslíš ukazatel na char (aka řetězec) a dáš si tam třeba integry:

void fce(int *a)

{
*a = 5;
}

Je tady potřeba alokace?

Nahlásit jako SPAM
IP: 88.101.128.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
MaS0
Návštěvník
31. 3. 2009   #8
-
0
-

To bukaj_001 : jo to jo...omlouvám se oboum (jouda a dannyk), nějak se mi asi vykouřilo z hlavy, že řetězce 'natvrdo zapsaný v kódu' nejsou lokální....

Nahlásit jako SPAM
IP: 195.146.114.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 132 hostů

Podobná vlákna

Vrácení pole — založil Janek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý