2016-04-19 13 views
-3

を実行していないが、私は以下のコードを実行する場合:argcとargvが、私はUbuntuの下にこのコードを実行しようとしている

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <sys/types.h> 
#include <signal.h> 

int main(int argc , char agrv[3]){ 
    int pid ,sig; 
    sig = atoi(argv[1]); 
    pid = atoi(argv[2]); 
    kill(pid,sig); 
    return(0); 
} 

をそれは

ex02.c:10:13: error: ‘argv’ undeclared (first use in this function) 
sig = atoi(argv[1]); 
+1

正しい宣言は 'int main(int argc、char * argv [])' 'argv'はcharの配列ではなくcharポインタの配列です。 – LPs

+2

スクリプト?うんぷん?本当に??? –

+1

さらに、 'argv'と' agrv'は異なる名前です - あなたは両方を使いました。 – Useless

答えて

0

あなたはタイプミスをしたと言いますagrvであり、メインの署名はint main(int argv, char *argv[])です。

argvは、NULLで終わるchar *の配列です。 NULLまでの配列の各要素は、コマンドラインの文字列を表します。

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <sys/types.h> 
#include <signal.h> 

int main(int argc, char *argv[]){ 
    int pid, sig; 
    sig = atoi(argv[1]); 
    pid = atoi(argv[2]); 
    kill(pid, sig); 
    return(0); 
} 
+0

**文字列** ....もう一度しないでください:| – Michi

+1

おい、さあ、C-ストリングだよ。 – totoro

+0

Cに文字列がありません。 – Michi

1

あなたはmainの定義行でミスを犯し、argvは、問題があなたのmain()の機能ヘッダにあるchar*文字列

int main(int argc, char *argv[]) 
{ 
/* 
other code here 
*/ 

} 
+4

... 'char'_の_pointersの配列がおそらく良いでしょう。 – ForceBru

+0

char *文字列の配列がありません。 – Michi

+0

ありがとう、私は本当に今、愚かな気分です。 –

0

の配列です。

このようにする必要があります。

int main(int argc, char *argv[]) 
{ 
    //Function Body 
    return 0; 
} 

フォーマルパラメータargvは、array of pointers to charです。 charへの各ポインタは、プログラムに渡される引数を保持します(また、プログラムの名前はargv [0]によって指されます)。

関連する問題