2017-01-12 39 views
0

配列に格納されている互換性のない変数型についてコンパイラが不平を言っています。 これは、文字をargv [1]から大文字(最初のforループ)に変換しようとしているときに発生します。同様のエラーが2番目のforループで発生します。 ここでは、charsを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; 
関連する問題