Hallo, unsere Aufgabe ist es eine Funktion zu schreiben, die aus einem String die nicht druckbaren Zeichen, inklusive Leerzeichen entfernt und die Anzahl der entfernten Zeichen zurückgibt. Wir schaffen es nicht, dass der String außerhalb der Funktion geändert ist. Wir haben zuerst versucht den Inhalt des Stings zu verändern, das klappt schonmal nicht. Dann haben wir versucht den Pointer des Strings folgendermaßen umzusetzen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <ctype.h> #include <stdio.h> int strclean(char *t){ int i=0; int j=0; char *p; //unser Versuch int zaehler=0; while(t[i++]); char neu[i]; p=neu; //unser Versuch for(j=0;j<i-1;j++){ if(isgraph(t[j])==0) zaehler++; else{neu[j-zaehler]=t[j];} } neu[j-zaehler]='\0'; printf("%s\n",neu); t=p; //unser Versuch printf("%s\n",t); return zaehler; } |
Wir können leider nicht auf die Main-Methode zugreifen, sondern die Funktion nur testen. Der Test liefert den eingegebenen String und die richtige Anzahl der entfernten Zeichen. Bei "result:" steht jedoch nicht der bearbeitete Sting, sondern der Anfangsstring. Wie können wir dies ändern? Vielen Dank!