overførsel af char på tværs af funktioner

Tags:    c++

Hvordan kan jeg overføre en char fra en funktion til en anden? char'ens indhold er defineret af brugeren derfor er det ikke sikkert den er lige lang hver gang...

//Søren



10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hvordan kan jeg overføre en char fra en funktion til en anden? char'ens indhold er defineret af brugeren derfor er det ikke sikkert den er lige lang hver gang...

//Søren

Mener du så en char vaiabel defineret i funktion1 også kan ses i funktion2?
Hvis du gør kunne du lave en global variabel.



Mener du en char * (streng) ? En char er altid lige lang.

Måske

void bar(char **x)
{
*x = "Whatever";
}

void foo(void)
{
char *p;
bar(&p);
printf("Streng: %s\\n", p);
}

eller:

void a(char *x)
{
printf("streng: %s\\n", x);
}

void b(void)
{
a("Ole Bole\\n");
}



Mener du en char * (streng) ? En char er altid lige lang.

Måske

void bar(char **x)
{
*x = "Whatever";
}

void foo(void)
{
char *p;
bar(&p);
printf("Streng: %s\\n", p);
}

eller:

void a(char *x)
{
printf("streng: %s\\n", x);
}

void b(void)
{
a("Ole Bole\\n");
}


Det er til c++, jeg syntes ikke det der ser særligt c++ agtigt ud...
Men det er funktion nr 1 som skal henter navnet fra funktion nr 2...
//Søren



Fold kodeboks ind/udKode 




Er dette "C++ agtigt" nok?

Fold kodeboks ind/udKode 




Bertel Brander, det var da ikke for genere dig.... men jeg troede ikke det var C++...
KOEN hvis jeg gør som du har skrevet får jeg følgende fejl:
test.cpp:13: error: ISO C++ forbyder erklæring af 'getname' uden en type
//Søren



Bertel Brander, det var da ikke for genere dig.... men jeg troede ikke det var C++...
KOEN hvis jeg gør som du har skrevet får jeg følgende fejl:
test.cpp:13: error: ISO C++ forbyder erklæring af 'getname' uden en type
//Søren

fandt selv fejlen...

jeg har følgende kode:

char*ord;

int funk2(void){
char mellem[64];
cin >> mellem;
ord = mellem;
}

men når jeg i funk1 vil have den skal udskrive ord som fx er sat til test skrive den: estX
//Søren



mellem er en lokal variabel som du sætter din pointer til at pege på.

Problemet er at indholdet af lokale variable kun er valid indtil afslutning på funktionen.

Du kan løse det ved at bruge:

static char mellem[64];

Eller ved at new'e hukommelse til din pointer og så delete det når du er færdig med at bruge det, f.ex:

char *ord;

int funk2(void)
{
ord = new char [123];
cin >> ord;
}

int main()
{
funk2();
cout << ord << endl;
delete [] ord;
}

Det kan anbefales at bruge getline i stedet for cin >>

[Redigeret d. 14/03-04 22:00:13 af Bertel Brander]



En løsning der efter min mening er noget kønnere:

#include <string>
#include <iostream>

using namespace std;

string Func2()
{
string x;
getline(cin, x);
return x;
}

int main(void)
{
string MyString = Func2();
cout << MyString << endl;
}



En løsning der efter min mening er noget kønnere:

#include <string>
#include <iostream>

using namespace std;

string Func2()
{
string x;
getline(cin, x);
return x;
}

int main(void)
{
string MyString = Func2();
cout << MyString << endl;
}


Jeg har fået det til at virke nu (ved ikke hvor kønt det er ;))... tak for hjælpen...
//Søren



t