C: Buffer-Element einem anderen Buffer-Element zuweisen

Defragger

Ensign
Registriert
Dez. 2015
Beiträge
134
Hi zusammen,

ich habe seit einiger Zeit nichts großartiges mehr in C gemacht und habe nun aus Spaß ein kleines Programm geschrieben, bei dem ich eine Zeichenkette von hinten durchlaufe und deren letztes Zeichen dem ersten Zeichen einer zweiten Zeichenkette zuweisen möchte.

Der Code sieht wie folgt aus: (Initialisierung: n = 0)
for(int l = 9; l >= 0; l--){
//strcat(reversedNumberBuffer[n],buf[l]); -> funktioniert nicht wegen "expected char* but argument is of type char
reversedNumberBuffer[n] = buf[l]; /*die letzte Stelle von buf wird an die erste von reversedNumberBuffer gesetzt*/
n = n + 1; //im naechsten Durchlauf wird die zweite Stelle von korrekteZahlBuffer befuellt
}

n = 0; //n wird fuer die naechste Zaehlschleife auf 0 gesetzt
____

Die Zuweisung reversedNumberBuffer[n] = buf[l]; funktioniert nicht, wenn ich später "reversedNumberBuffer" per printf ausgeben möchte, dann wird nichts angezeigt. Wenn ich bspw. "printf("Umgedrehte Zahl: %s\n", reversedNumberBuffer[4]);" schreibe, dann wird "<null>" ausgegeben.

Wie kann ich den Code schreiben, sodass die Zuweisung funktioniert?

Lg,

Defragger
 
strcat würde ich nicht nehmen. Bitte die Code Funktion (#) benutzen zum einfügen von Quelltext hier im Forum.

Ggfs, den String noch mit einer 0 abschließen.

In Deinem printf() Beispiel zur Ausgabe eines Zeichens musst Du %c statt %s benutzen

Code:
for (i=0;i<=9;i++)
  {
      ziel[i]=quelle[9-i];
  }
 
Zuletzt bearbeitet:
Ein C String ist nullterminiert. Du schreibst dann also diese Null mit der der String buf endet als erstes in reversedNumberBuffer. D.h. reversedNumberBuffer fängt mit 0 an und ist damit sofort zu Ende.

Also nicht die Null kopieren. Den erzeugten String aber dann, wenn nötig, mit Null terminieren
 
Hi desmoule,

das mit der Nullterminierung ist mir gestern Abend auch noch eingefallen, allerdings dachte ich, dass dann einfach mit dem nächsten Zeichen weitergemacht würde. Aber danke für die Info, das liegt dann wohl doch schon zu lange in der Vergangenheit!

Top Antwort! :D :)
 
Zurück
Oben