2013-03-08 101 views
1

我想在C.得到一個字符串的第一個字符(CHAR [])得到第一個字符從*的char []變量用C

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 []。

+0

使用解引用運算符? – 2013-03-08 19:11:01

+2

程序中沒有'char []'變量。 'C'是'char','argv'是'char * []'。 – Barmar 2013-03-08 19:11:58

+0

@ qPCR4vir'argv [0]'是程序的名稱,它是一個字符串,而不是'char'。 – Barmar 2013-03-08 19:13:41

回答

2

有兩種主要方法可以做到這一點。首先是簡單地解引用指針。

C = *argv[4]; 

你也可以通過數組下標來實現,它在引用它之前隱式地向指針添加一個偏移量。

務必檢查它是否爲空,依此類推。一般來說,處理指針時需要小心。

+0

我猜'argc!= 5'測試計數在這種情況下檢查有效性。 – 2013-03-08 19:23:07

+0

真的很感謝。是的,argc!= 5檢查它是否爲空。 – 40detectives 2013-03-08 19:37:17

1

argv[4]char陣列。您需要取消引用該陣列以從中獲取單個元素

C = *(argv[4]); 
相關問題