String umdrehen funktioniert nicht
-
Moin,
ich soll eine Funktion schreiben die einen übergebenen String rückwärts wieder zurückgibt, nur leider funktioniert dass nicht so wie ich mir das vorstelle.
#include <stdio.h> #include <stdlib.h> int laenge(char *x){ //Funktion um die Länge eines überg. Strings // zu ermitteln - funktioniert int counter =0; int i; for(i=0; x[i]!='\0'; i++){ counter++; } return counter; } char *umdrehen(char *arr,char *dest){ //mit dieser Fkt. wollte ich den //übergebenen String umdrehen int i; //Laufvariable int len=laenge(arr); //Länge ermitteln int b=len; for(i=0; i<len; i++){ dest[i]=arr[b]; //Das Zeichen dass bei arr an letzter Stelle steht b--; //soll bei dest an die erste Stelle } //dann wird b um eins verringert und i um eins erhöht //das ganze solange bis die Länge von arr erreicht //wurde return dest; } int main() { char arr[]="Meister"; char arr1[10]; printf("%s",umdrehen(arr,arr1)); }
Das Programm startet, und terminiert ganz normal, nur dass nichts ausgegeben wird und ich auch keine Fehlermeldung bekomme.
Wo liegt mein Fehler
-
jetzt funktionierts.
Meine Anweisung in der for-Schleife sieht jetzt folgendermaßen aus:
dest[i]=arr[b-1]; b--;
es lag also an dem "-1", dass ich beim ersten mal nicht hatte
-
Zeile 39 ist auch noch Müll, da du den Zielstring nicht vernünftig mit '\0' terminierst.
-
stimmt, habe nun noch nach der for-Schleife:
dest[i]='\0';
hinzugefügt
-
ich_hasse_C schrieb:
jetzt funktionierts.
Meine Anweisung in der for-Schleife sieht jetzt folgendermaßen aus:
dest[i]=arr[b-1]; b--;
es lag also an dem "-1", dass ich beim ersten mal nicht hatte
Es ist aber bei der Berechnung von b besser aufgehoben.
-
ich_hasse_C schrieb:
dest[i]=arr[b-1]; b--;
i und b sind gleich wichtig udn tun eigentlich das gleiche, werden hier aber völlig anders angefaßt. das verwirrt mich.
-
volkard schrieb:
ich_hasse_C schrieb:
dest[i]=arr[b-1]; b--;
i und b sind gleich wichtig udn tun eigentlich das gleiche, werden hier aber völlig anders angefaßt. das verwirrt mich.
char arr[]="Meister"; char arr1[10]; size_t len = strlen(arr)-1; size_t i = 0; for( ; i <= len; i++ ) arr1[i] = arr[len-i]; arr1[i] = '\0'; printf("%s",arr1);