Prüfen ob Nummer, falsches Casting?
-
Hallo,
wieso funktioniert das casting von code[i] in Zeile 12 nicht?gutschein.c:12: warning: passing argument 2 of ‘strcat’ makes pointer from integer without a cast
/usr/include/string.h:135: note: expected ‘const char * restrict’ but argument is of type ‘char’#include <stdio.h> #include <string.h> int main (int argc, char* argv[]) { char *code = "12ab34!"; char zcode[10]; for (int i = 0; i < strlen(code); i++) { if (code[i] >= 48 && code[i] <= 57) printf(" %i ",code[i]); strcat(zcode,(char)code[i]); } return 0; }
-
Was denkst du passiert hier?
char *code = "12ab34!"; //ganz dicker Fehler
Außerdem wird strcat falsch verwendet...
(char)code[i] /*--->*/ code[i] //man das ist schon ein char.
-
strcat will einen char*, Du übergibst einen char.
-
strcat() erwartet als 2. Parameter die Adresse eines Nullterminierten Strings. (ein char Array)
Du übergibst aber ein einzelnes Zeichen.
Selbst wenn du da jetzt (charvorschreibst klappt das nicht.
-
int position = 0; .. for(...) { zcode[position++] = code[i]; }
Und Stringliterale solltest du wirklich gleich const deklarieren, Dummheiten wie
const char* c = "Hallo"; c[1] = 'e';
unterbindet dann der Compiler.
-
// _Falke Kommentar noch nicht gelesen zu dem Zeitpunkt
#include <stdio.h> #include <string.h> int main (int argc, char* argv[]) { char code[] = "12ab34!"; char zcode[10]; for (int i = 0; i < strlen(code); i++) { if (code[i] >= 48 && code[i] <= 57) printf(" %i ",code[i]); strcat(zcode,code[i]); } return 0; }
Ich weiß nicht weiter,
wie schaff ich es, dass ich mein einzelnes Zeichen passend umcaste?
-
Und das zcode[position] = '\0'; nach der Schleife nicht vergessen.
-
DirkB schrieb:
Und das zcode[position] = '\0'; nach der Schleife nicht vergessen.
Blöd von mir, habe ich vergessen, danke für die Ergänzung!