String als Rückgabewert an Fkt < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:49 Do 14.06.2007 | Autor: | misterET |
Hallo,
wie ist es denn möglich, eine Funktion mit dem Rückgabetyp "string" zu erstellen?
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:27 Do 14.06.2007 | Autor: | jerry |
Hallo,
ich weiß zwar nicht genau worauf du hinaus willst, aber versuchs einfach mal. Wenn ich dich falsch verstanden habe dann meld dich nochmal.
#include <string>
std::string tuEtwas();
oder du arbeitest halt mit nem char-Array, dann gibst halt zum beispiel nen pointer auf das erste element zurück.
gruß jerry
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:47 Do 14.06.2007 | Autor: | misterET |
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Hi!
Danke jedenfalls schonmal für deine Hilfe!
ich schreib mal ein kleines Beispiel auf:
#include <conio.h>
#include <stdio.h>
char funktion(char a[]); /* Deklaration einer Funktion */
void main(void)
{
char zk[20]= "Das ist eine Kette";
so, jetzt würde ich die Kette gerne in die Funktion einlesen, ein bisschen bearbeiten, und anschließend würde ich die Zeichenkette gerne wieder an die Funktion zurückgeben, um die bearbeitete Zeichenkette ausgeben zu können.
Das ist glaube ich nicht so einfach, ich hoffe dir fällt dazu was ein!
Mfg
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:09 Do 14.06.2007 | Autor: | jerry |
also sagen mir mal so: soweit ich weiß kannst du nicht einfach ein array zurückgeben. du musst mit call by reference arbeiten.
Ich hab mein ein kleines Beispiel angefügt. ich hoffe es ist dass was du suchst.
gruß jerry
#include <iostream>
void funktion(char a[]) {
std::cout << a[1];
a[1] = 'Y';
}
void main(void)
{
char zk[19] = "Das ist eine Kette";
funktion (zk);
std::cout << zk[1];
}
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:25 Do 14.06.2007 | Autor: | misterET |
Hmm das sieht mi ziemlich nach C++ aus. So fit bin ich noch nicht. Call by reference bedeutet doch mit Zeigern zu arbeiten? Ich sehe hier aber keine Zeiger...
Kannst du mir zeigen wie das in C aussieht?
Danke, gruß misterET
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 06:18 Fr 15.06.2007 | Autor: | jerry |
Hallo,
hab jetzt grad keine zeit, aber ich schau da nochmal nach und meld mich bis spätestens heute abend wieder.
Gruß Jerry
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:42 Fr 15.06.2007 | Autor: | jerry |
Hallo,
also ich hab mich nochmal schlau gemacht.
Du kannst prinzipiell Arrays nicht als Call by Value übergeben.
Sowohl in C also auch C++.
deshalb wird da automatisch wohl nur der Zeiger übergeben.
wie bereits erwähnt, läßt es sich mit std::string viel leichter arbeiten. spricht da was dagegen? ansonsten musst du dich halt mit den zeigern rumquälen =)
gruß jerry
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:44 Sa 16.06.2007 | Autor: | misterET |
Ok, ich habe jetzt eine Funktion geschrieben, die mir einen Zeiger zurückgeben kann.
So, jetzt habe ich nur noch ein Problem!!!!
Sagen wir mal, mein Feld heißt "char string[50];"
meine funktion heißt "char *fkt(a,b,c..)"
Die Adresse vom ersten Element der Funktion ist also:
fkt(a,b,c..)
Jetzt muss ich meinem Feld "string[50]" doch die Adresse vom ersten Element zuweisen!!! DAS KLAPPT ABER NICHT!
Oder wie macht man es?
normalerweise ja so:
string = fkt(a,b,c..);
string ist ja gleich = &string[0];
und fkt(a,b,c..) = &fkta,b,c)
Aber wenn ich dem 0.Elemet vom string eine Adresse zuweisen will, kommt nur folgende Fehlermeldung:
'=' : left operand must be l-value
Ich denke einem Zeiger kann man eine Adresse zuweisen, warum klaüppts dann net?
Aber trotzdem schonmal danke für die Hilfe, bin glaub ich schon nahe an der Lösung... ;)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:57 Sa 16.06.2007 | Autor: | misterET |
Hallo, hab alles jetzt so hinbekommen, wie ich es wollte!
MfG UND DANKE
Mister<<<
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:15 Sa 16.06.2007 | Autor: | jerry |
kein problem.
dann schließe ich die offene frage hiermit mal.
Gruß jerry
|
|
|
|