1
void decimal2binary(char *decimal, char *binary) {   
    //method information goes here    
}

これがメインです

int main(int argc, char **argv) {

char *data[100];
if (argc != 4) {
    printf("invalid number of arguments\n");
    return 1;
}
if (strcmp(argv[1] , "-d")) {

    if (strcmp(argv[3] , "-b")) {
        decimal2binary(temp, data);
    }
    }
}

今、私はこのエラーを受け取ります

     warning: passing argument 2 of ‘decimal2binary’ from incompatible pointer type [enabled by default]

     note: expected ‘char *’ but argument is of type ‘char **’

したがって、それらは互換性のない型であると言われていますが、データを取得するには argv を使用する必要があります (そう尋ねられました) 他の方法はありますか?

4

1 に答える 1

8

の宣言dataを単純に変更します。

char data[100];

type へのポインターの配列は必要ありませんchar。これは、コードが現在立っているときに宣言したものです。単にバイト配列が必要です。あなたの混乱は、配列はポインターではありませんが、関数の引数として渡されると、配列の最初の要素へのポインターに崩壊するという事実に起因すると思います。したがって、単純に と言うだけdecimal2binary(temp, data);で、 の最初の要素へのポインターを渡すことdataになります。この場合、charではなくへのポインターである必要がありますchar*

于 2012-10-24T01:15:26.333 に答える