Rückgabewert von Funktion ausgeben

Gast #2906419
Lesenswert?

Ich habe eine Frage zu bei der Programmierung mit C++
1
void function(char *in)
2
{
3
 in[]="Eingabe";
4

5
return;
6
}
7

8
int _tmain(int argc, _TCHAR* argv[])
9
{
10
    
11
  char line[];
12
  
13
        fuction(line);
14
  
15

16

17
  
18
  
19
  return 0;
20
}

Ich möchte den String "Eingabe" in der Mainfunktion als Printf ausgeben.
Wie gekomme ich das hin?

Gruß und danke
Gast #2906474
Lesenswert?

keystone schrieb:

> So geht es aber leider auch nicht. Kann mir jemand sagen wo mein Probelm
> ist?

In deinem Code sind ziemlich viele Probleme. Am besten legst du "rohe" 
Arrays aus char gleich mal zur Seite und benutzt std::string 
stattdessen. Wenn du der Funktion als Parameter eine Referenz spendierst 
(das ist das &), dann kannst du es so schreiben:

#include <string>

void function(std::string& in)
{
    in = "Eingabe";
}

int main()
{
    std::string line;
    fuction(line);
    return 0;
}

keystone schrieb:
> Ich möchte den String "Eingabe" in der Mainfunktion als Printf ausgeben.
> Wie gekomme ich das hin?

Statt printf() benutzt du am besten std::cout. Das kann mit der Klasse 
string umgehen.
Gast #2906804
Lesenswert?

keystone schrieb:
> Ich würde aber gernde die Codezeile
>
> void function(char *in)
>
> nicht verändern wollen, geht das dann auch?

Wie schon gesagt: Das macht man in C++ so nicht. Gehen würde es aber. Du 
mußt dann in function() mit strcpy den Inhalt in deinen Zielstring 
kopieren. Der Aufrufer muß sicherstellen, daß das Array, das er an 
function() übergibt, groß genug ist, um den gesamten Text und das 
abschließende \0 auch aufzunehmen.
Gast #2906869
Lesenswert?

keystone schrieb:
> Hallo ich dachte es geht vielleicht ohne strcpy
Erst den Prototypen nicht verändern, jetzt ohne strcpy, was kommt als 
nächstes?

http://www.mikrocontroller.net/articles/Netiquette#Klare_Beschreibung_des_Problems 
Was hast du genau vor? Was soll das werden?

>Das ist noch nicht mal C.
>Das ist von C soweit entfernt, wie eine Fleischereifachverkäuferin von
>einem Herzchirurgen.
Sowas dachte ich mir vorhin auch, hab es mir aber verkniffen zu 
posten...
#2907369
Lesenswert?

keystone schrieb:
> Hallo danke für die vielen Beiträge. Ich habe es Rausgefunden.
>
>
> Ohne string.h und ohne strcpy.
>
>
> Ich hab doch gewusst das da bei Arrays was besoderes ist!!!
>
>
> Gruß

und wie genau sieht jetzt deine Lösung aus?

Nur: ällebätsch, ich habs jetzt rausgefunden, ist "blöde" für den 
nächsten, der was lernen möchte ...
#2907436
Lesenswert?

Wegstaben Verbuchsler schrieb:
> keystone schrieb:
>> Hallo danke für die vielen Beiträge. Ich habe es Rausgefunden.
>>
>>
>> Ohne string.h und ohne strcpy.
>>
>>
>> Ich hab doch gewusst das da bei Arrays was besoderes ist!!!
>>
>>
>> Gruß
>
> und wie genau sieht jetzt deine Lösung aus?


Hmm.
Ich bin mir nicht sicher, ob ich das überhaupt wissen will.


> Nur: ällebätsch, ich habs jetzt rausgefunden, ist "blöde" für den
> nächsten, der was lernen möchte ...

Der sollte sich sowieso besser an den bereits weiter oben verlinkten
http://www.mikrocontroller.net/articles/String-Verarbeitung_in_C#wie_schreibt_man_eine_Funktion.2C_die_einen_String_liefert.3F
halten, als an ein Codebeispiel eines 'C++ - Programmierers', dem nicht 
klar ist, was an
     char line[];
das Problem darstellt.
Gast #2907554
Lesenswert?

Dann entschuldige ich mich hier und liefere meine Lösung.

Mein Probelm bestand darin ein Array an eine Funktion zu übergeben, in 
der Funktion etwas in das Array zu schreiben und in der Main- Fkt über 
ein Printf das Array auszulesen und den Inhalt der in der Funktion in 
das Array geschrieben wurde dort auszugeben.

Die Lösung liegt im Sonderfall eines Array. Beim Array wird die 
Parameterübergabe immer mit referenciert übergeben (Zeiger).

Das bedeutet die Funktion bleibt wie oben beschrieben gleich zu beginn 
dieses Treads.

Die Ausgabe erfolt so:
1
define ARR 10;
2
char line[];
3

4
for(i=0;i<ARR;i++){
5

6
prinft("%c",line[i]);
7
}
8
funktion(line)
9

10
for(i=0;i<ARR;i++){
11

12
prinft("%c",line[i]);
13
}
Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren