Woeter umdrehen?



  • Hallo!

    Ich hab folgenden Funktion geschrieben:

    char* reverse(char *string)
    {
    	int anz = 0;
    	int count = 0;
    	char *string_new = NULL;
    
    	while(string[count]!= '\0')
    		count++;		
    	string_new = realloc(string_new,(count+1)*sizeof(char*));
    
    	if(!string_new)
    		return NULL;
    
    	while(count != 0)
    		string_new[anz++] = string[count--];
    
    	string_new[++anz]= '\0';
    
    	printf("%c",string_new);
    	return string_new;
    }
    

    Sie soll die Buchstaben umdrehen also aus ABC wird CBA. Aber läuft funktioniert die Zeile:

    string_new[anz++] = string[count--];
    

    nicht!
    Was ist hier der Fehler?
    mfg



  • Bei gehört printf("%s") für die ausgabe des strings hat aber nichts geändert!



  • Habs schon:

    while(count != 0)
     string_new[anz++] = string[(count--)-1];
    

    Hab mich um eins verzählt! 😡 😡



  • co6er schrieb:

    Hab mich um eins verzählt! 😡 😡

    hehe, der übliche off-by-one fehler. da musste echt aufpassen. keine noch so tolle programmiersprache, mit arrays und/oder pointern, kann dich davor bewahren.
    🙂



  • hehe, der übliche off-by-one fehler.

    Einer meiner früheren Lehrer hat uns immer die Hand vor
    die Nase gehalten und gesagt: "5 Finger - 4 Zwischenräume".
    Und der hatte gar nichts mit EDV zu tun!
    🙂



  • flamer schrieb:

    hehe, der übliche off-by-one fehler.

    Einer meiner früheren Lehrer hat uns immer die Hand vor
    die Nase gehalten und gesagt: "5 Finger - 4 Zwischenräume".
    Und der hatte gar nichts mit EDV zu tun!

    hätte er was mit C zu tun, dann hätte er gesagt: '4 finger, 3 zwischenräume'
    🙂



  • 🙂
    Oder mit dem Sägewerk...


Anmelden zum Antworten