char function

Post Reply
Message
Author
Herbert Maschke

char function

#1 Post by Herbert Maschke »

Huhu. folgendes winziges C++-programm:

#include <stdio.h>

char get() {
return "1";
}

main() {
char test;

test = get();
printf("%s", test);
}

fehlermeldung:

test.cpp: In function `char get()':
test.cpp:4: return to `char' from `const char *' lacks a cast

Wie krieg ich dies trotzdem zum laufen? So dass als ausgabe nur
1
auf dem bildschirm steht? 1 moechte ich also evtl. auch noch mit nem
string austauschen... also einfach int draus machen geht auch nicht.
Hab schon ueberall gesucht... plz help
thyseus@gmx.net

Jochen

Re: char function

#2 Post by Jochen »

Du schmeisst gerade "char" und "char *" (also typischerweise Strings = Zeiger auf mit \<!--no-->0 abgeschlossene Folge von Zeichen) durcheinander. Wenn der Rückgabewert von get() char sein soll, musst Du auch ein char zurückgeben, also '1' statt "1". Man beachte die Apostrophe statt der Anführungszeichen! Und dann muss auch printf wissen, dass es ein Zeichen und nicht eine Zeichenkette auszugeben hat: %c statt %s. Das ganze ergibt dann <blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#include <stdio.h>

char get(void) {
return '1';
}

int main (void) {
char test;

test = get();
printf ("%c\<!--no-->n",test);
exit (0);
}
</font><hr></pre></blockquote>Übrigens ist das reines C und kein C++...

Jochen

Herbert Maschke

Re: char function

#3 Post by Herbert Maschke »

Und wenn ich anstatt 1 Char jetzt mehrere Chars
zurueckgeben will muss ich %c nur mit %s ersetzen(im printf)?

Jochen

Re: char function

#4 Post by Jochen »

Das auch, aber das langt nicht. Schliesslich gibts Du ja anstelle eines char (1 Byte) einen Zeiger auf char (char*, auf IA32 4 Byte) zurück. Also musst Du den Typ der Variablen test, den Rückgabewert der Funktion, das Literal in der Funktion und den Formatstring ändern:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#include <stdio.h>

char *get(void) {
return "Hallo, Welt!";
}

int main (void) {
char *test;

test = get();
printf ("%s
",test);
exit (0);
}</font><hr></pre></blockquote>
Alles klar? Es gibt da noch ein paar Fallstricke bei Zeichenketten, aber über die solltest Du erst stolpern, wenn Du dieses Problem auf der Kette hast. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Jochen

Herbert Maschke

Re: char function

#5 Post by Herbert Maschke »

Thx an alle jez hab ich einiges verstanden.

Post Reply