1. ホーム
  2. c

[解決済み] C言語でのargv[]の長さの求め方

2022-02-15 03:17:07

質問

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]){
    int fir; //badly named loop variable
    char *input[] = calloc( strlen(argv), sizeof(char)); //initializing an array
    for( fir = 1; fir< strlen(argv); fir++){ //removing the first element of argv
        strcat(input, argv[fir]); // appending to input
    }
}

エラーが出たのは7行目です。これは、"passing argument 1 of 'strlen' from incompatible pointer type"と言っています。私は、同じエラーを strcat 関数があります。 また char ** が、期待されるのは const char * 両方の関数で "。

のすべての要素で新しい配列を作成しようとしています。 argv を除く。試しに argv = &argv[1] と表示され、うまくいきませんでした。

を実行します。 strlen()strcat() を取らない関数は char の配列は?

どのように解決するのですか?

int main(int argc, char *argv[])

argv へのポインタの配列です。 char (すなわち文字列の配列)。この配列の長さは argc 引数で指定します。

strlen は、ヌル終端でなければならない単一の文字列の長さを取得するために使用されることを意図しています。そうでなければ、動作は不定です。