2016-04-19 90 views
-3

我試圖運行在Ubuntu下這個代碼,但是當我運行下面的代碼:argc和argv沒有運行

#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

腳本? Ubunto?真??? –

+1

此外,'argv'和'agrv'是不同的名稱 - 您已經使用了兩者。 – Useless

回答

0

你犯了一個錯字與agrv和主簽名是int main(int argv, char *argv[])

argvchar *的數組,終止於NULL。直到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定義行犯的錯誤,argvchar*

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

} 
+4

...是指向'char'_的_pointers數組可能會更好。 – ForceBru

+0

沒有char *數組的數組我是c。 – Michi

+0

謝謝你們,我現在真的覺得很愚蠢。 –

0

的陣列的問題在於你main()的函數頭。

它應該是這樣的。

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

形式參數的argv是array of pointers to char。並且每個指向char的指針都保存一個傳遞給程序的參數(另外,程序的名稱將由argv [0]指向)。