2013-03-08 5 views
1

에 * 문자 [] 변수에서 첫 번째 문자를 얻을내가 C에서 문자열의 첫 번째 문자 (문자 [])를 얻으려면 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 

위의 코드는 나에게 경고를 제공합니다 : 포인터로 캐스팅 다른 크기의 정수에서.

EDIT : 주석에서 지적한대로 argv는 char []가 아니라 char * []입니다.

+0

역 참조 연산자를 사용합니까? –

+2

프로그램에'char []'변수가 없습니다. 'C'는'char'이고'argv'는'char * []'입니다. – Barmar

+0

@ qPCR4vir'argv [0]'은 프로그램의 이름이고'char'가 아닌 문자열입니다. – Barmar

답변

2

두 가지 주요 방법이 있습니다. 첫 번째는 단순히 포인터를 역 참조하는 것입니다.

C = *argv[4]; 

역 참조하기 전에 암시 적으로 포인터에 오프셋을 추가하는 배열 첨자를 통해 수행 할 수도 있습니다.

먼저 null인지 확인하십시오. 일반적으로 포인터를 다룰 때 조심해야합니다.

+0

'argc! = 5' 테스트는이 경우 유효성을 검사한다고 생각합니다. –

+0

정말로 감사합니다. 그리고 yes, argc! = 5는 null인지 검사합니다. – 40detectives

1

argv[4]char 어레이입니다. 배열에서 요소 하나를 얻기 위해 해당 배열의 참조를 취소해야합니다.

C = *(argv[4]);