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]
'の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) –