Hallo,
ich habe gestern mit C begonnen zu Programmieren und muss sagen, der Anfang war überraschend einfach\^^ Aber dann hing ich Stunden an einer Funktion. Ich weiß mitlerweile, dass es an dem Rückgabepointer liegt, habe den Fehler aber nicht lösen können. Irgendwann hab ich dann (fast) alles Mögliche versucht, aber habs net hinbekommen. Es wäre wirklich toll, wenn mir jemand Helfen könnte ☹
Nun zur Sache: Ich habe eine Funktion, die den übergebenen Parameter reinigen soll, so dass alle klein Buchstaben zu Großbuchstaben werden und dann nur noch Großbuchstaben und Zahlen zurückgegeben werden. Mein Ansatz ist:
char* clean(char s[100]) { char *res = (char *) malloc(100); char test[100]; char h[10] = "X"; int i; for (i = 0; i<strlen(s); i++) { s[i] = toupper(s[i]); if (((s[i]>='A') && (s[i]<= 'Z')) || ((s[i]>='0') && (s[i]<= '9'))) { strncpy(h,&s[i],1); strcat(test,h); } } // strcpy(res, test); return(res); }
Der Aufruf lautet wie folgt:
printf(strcat("\nCodierung: ", clean(text)));
Text ist ein Char[100] und wird mittels scanf("%s", text); gefüllt. Beim Compilieren bekomme ich den "Fehler: hello.c:58: Fehler: inkompatible Typen in Zuweisung" welcher sich auf den Aufruf von clean bezieht." Zuvor hatte ich es ohne Malloc und anderen Variationen.
Vielen Dank im Vorraus, Stone