2017-01-12 3 views
0

Compiler beschwert sich über inkompatible Variablentypen, die im Array gespeichert sind. Das passiert, wenn ich versuche, Zeichen von argv [1] in Großbuchstaben zu konvertieren (first for loop). Ein ähnlicher Fehler tritt in der zweiten for-Schleife auf, , wo ich Zeichen in ihr ASCII-Äquivalent umwandeln und davon 64 subtrahieren möchte. Was soll?inkompatible Konvertierungsfehler in C

//converts chars in argv[1] to uppercase letters 
for (int i = 0, n = strlen(argv[1]); i < n; i++){ 
    argv[i] = toupper(argv[i]); 
    } 

//converts chars in argv[1] to numbers 
int key[strlen(argv[1])]; 
for (int i = 0, n = strlen(argv[1]); i<n; i++){ 
    key[i]= argv[i]-64; 

Fehler mesagges:

incompatible integer to pointer conversion assigning to 'string' (aka 'char *') from 'int' [-Werror,-Wint-conversion] 

und

incompatible pointer to integer conversion assigning to 'int' from 'string' (aka 'char *') [-Werror,-Wint-conversion] 
+5

'toupper()' wandelt ein einzelnes 'char' bedeuten scheint, kein String . Schlage 'argv [1] [i] = toupper ((vorzeichenloses Zeichen) argv [1] [i]); ' – chux

+1

dar. Argv [i] ist ein Zeiger, du willst argv [1] [i]. –

+1

Mögliches Duplikat von [toupper-Funktion] (http://stackoverflow.com/questions/15057899/toupper-function) –

Antwort

0

Es Sie

for (int i = 0, n = strlen(argv[1]); i < n; i++){ 
    argv[1][i] = toupper((unsigned char)argv[1][i]); 
    } 

//converts chars in argv[1] to numbers 
int key[strlen(argv[1])]; 
for (int i = 0, n = strlen(argv[1]); i<n; i++){ 
    key[i]= argv[1][i]-64;