Brauche Hilfe beim Invertieren eines Strings.
-
Hey Leute,
kann jemand von euch mir vielleicht sagen was an meinem Code falsch ist?
Das Programm stürzt leider bei jedem Versuch es zu starten ab#include <stdio.h> #include <string.h> void StringReverse(char str[]) { //Abbruch der Funktion falls String leer ist if((unsigned) strlen(str)==0) { return; } //Variablen char temp; size_t i = strlen(str)-1; size_t j; //Verarbeitung for (j=0;i/2>=0; i--, j++) { temp = str[i]; str[i] = str[j]; str[j] = temp; } //Ausgabe printf("%s", str); } int main(void) { char text[1000]; printf("String:"); scanf("%s",&text); StringReverse(text); return 0; }
für eure Hilfe wäre ich euch sehr dankbar
mfg
Raavgo
-
size_t ist ein vorzeichenloser Typ, i/2>=0 ist also immer wahr. Warum überhaupt /2?
-
Erstmals: %s erwartet einen char-Pointer. Du referenzierst jedoch das Array.
for (j=0;/*** die Bedingung hier... ===> ***/i/2>=0; i--, j++)
ist falsch. Sie sollte j<i lauten, dann funktionierts auch bestimmt.
-
MFK schrieb:
size_t ist ein vorzeichenloser Typ, i/2>=0 ist also immer wahr. Warum überhaupt /2?
Naja hier wird ja die erste und letzte Stelle des Strings bearbeitet darum auch /2.
gnihihihihi schrieb:
Erstmals: %s erwartet einen char-Pointer. Du referenzierst jedoch das Array.
for (j=0;/*** die Bedingung hier... ===> ***/i/2>=0; i--, j++)
ist falsch. Sie sollte j<i lauten, dann funktionierts auch bestimmt.
Danke für den Tipp