Pointer auf String zur printf()-Ausgabe?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich verstehe

printf("%c", str);

nicht.

%c erwartet EIN char und keinen Pointer auf char.

Nimm %s

Habe es versucht hat leider nicht geklappt

0
@OSaft111

Bei meinem Debugger sehe ich das array1 für -y90 den Wert ""-693" umwandelt.Ganz unten in der funktion zeigt str = array1; str = "-693" stimmt auch aber in der Main habe ich ja da ein Pointer str = NULL un der Parameter müsste ja den Wert "-693" bekommen aber wieso nicht ?

0
@OSaft111

Langsam komme ich dahinter.

Die Variable str in Main ist nur eine Variable mit dem Wert NULL;

Dieser Wert (nicht die Variable) geht als Argument an die Methode duoausgabe().

Das Argument einer Methode ist wie eine Variable für die Methode mit übergebenem Wert.

Du hast somit zwei quasi Variablen, eine in main und eine in duoausgabe. Beide sind vom Typ char * und haben den Namen str.

Lösung:

Globale Variable char * str. Keine Übergabe an duoausgabe(). duoausgabe hat nur noch ein Argument. Schlechter Stil. Gibt auch noch ein weiteres schweres Problem, siehe unten.

Oder: duoausgabe( int numwert, char ** pstr ). Zuweisung *pstr = array1; Dazu muss array1 static sein.

Das spezielle Problem von deiner Methode ist, dass der Speicher in der Methode duoausgabe() ist. Wenn die Methode verlassen wird, gibt es den Speicher von array1 nicht mehr. Selbst wenn du den Pointer darauf hast und du mal das richtige Ergebnis rausbekommst, ist das ein schwerer Bug.

Lösung: setze das Array in main() und übergebe es als char * an duoausgabe(). In duoausgabe() löscht du array1 und arbeitest nur noch mit str.

1

Naja vielleicht solltest du deiner Funktion "str" übergeben anstatt "str3".

Edit: Zeile 11

Ah sry das habe ich hier nur falsch im Code ist das so wie du es meinst

0

Was möchtest Du wissen?