Probem mit *char
-
Hallo zusammen,
im Rahmen eines größerens Programmes bin ich auf das Problem gestoßen, dass in dieser Funktion das Programm abstürzt. Der Fehler tritt an der gekenzeichenten Stelle auf.
void makelwr(char *ptr){ if (ptr == NULL) return; while(*ptr != 0){ *ptr = (char)tolower((int)*ptr); // Hier kracht es !! ptr++; } return; }
Für Testzwecke wird dieses Programm über das dargestellte main() aufgerüfen.
int main(void){ char *ptr_1 = "HALLO\n"; makelwr(ptr_1); printf("%s", ptr_1); return(0); }
Kann mir von euch einer sagen wo mein Fehler liegt?
p.s.: Der Prototyp von makelwr(char *ptr) ist verbindlich und "DARF" nicht verändert werden. Ist für SharedLibrary welche def. Schnittstellen braucht. Somit muss der Fehler in der Funktion makelwr() behoben werden.
p.s.: Wenn ich den String von prt_1 zur Laufzeit über ein malloc hole, dann arbeitet das Programm gemäß seinen Vorgaben. Aber das kann ja nicht die Lösung sein.
Sage schon mal Danke.
-
char *ptr_1 = "HALLO\n";
Das ist ein Stringliteral auf welches du nicht schreibend zugreifen darfst. Die einfache Lösung:
char ptr_1[] = "HALLO\n";
Und schalt bitte bb-Code an wenn du die [cpp]-Tags verwendest