2

Cで文字列(char[])の最初の文字を取得したいです。

unsigned int N;
unsigned int F;
unsigned int M;
char C;
int main (int argc, char *argv[]){
    if (argc!=5){
        printf("Invalid number of arguments! (5 expected)\n");
        exit(-1);
    }
    N = atoi(argv [1]);
    F = atoi(argv [2]);
    M = atoi(argv [3]);
    C = (char) argv[4]; //this way gives a wrong char value to variable C

上記のコードでは、警告が表示されます: 異なるサイズの整数からポインターにキャストします。

編集: コメントで指摘されているように、argv は char [] ではなく char *[] です。

4

2 に答える 2

3

これには主に 2 つの方法があります。1 つ目は、単純にポインターを逆参照することです。

C = *argv[4];

逆参照する前に、ポインターにオフセットを暗黙的に追加する配列添え字を介して行うこともできます。

最初に null かどうかを確認してください。一般に、ポインタを扱うときは注意が必要です。

于 2013-03-08T19:11:12.077 に答える
1

argv[4]char配列です。その配列から単一の要素を取得するには、その配列を逆参照する必要があります

C = *(argv[4]);
于 2013-03-08T19:11:14.293 に答える