2017-01-12 83 views
0

編譯器抱怨存儲在數組中的不兼容變量類型。 發生這種情況時,我試圖將字符從argv [1]轉換爲大寫(第一個for循環)。類似的錯誤發生在第二個循環中, 我想將字符轉換爲它們的ASCII等效值並從中減去64。做什麼?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; 

錯誤mesagges:

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

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

'TOUPPER()'將單'char',而不是字符串。建議'argv [1] [i] = toupper((unsigned char)argv [1] [i]);' – chux

+1

argv [i]是一個指針,你需要argv [1] [i]。 –

+1

[toupper功能]可能的重複(http://stackoverflow.com/questions/15057899/toupper-function) –

回答

0

看來你的意思是

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; 
相關問題