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]
'TOUPPER()'將單'char',而不是字符串。建議'argv [1] [i] = toupper((unsigned char)argv [1] [i]);' – chux
argv [i]是一個指針,你需要argv [1] [i]。 –
[toupper功能]可能的重複(http://stackoverflow.com/questions/15057899/toupper-function) –