2012-05-08 3 views
1

이것은 여러 가지 물건을 인쇄하여 테스트 한 내용이지만, 어떤 이유로 든 알아 내지 못하는 경우가 하나 있습니다.argv로 인수에 액세스하기

나중에 사용할 함수의 인수로 인수를 전달해야하지만 올바르게 다시 저장하기 위해 다시 인쇄 할 때 임의의 숫자가 표시됩니다. 다음은 코드의 관련 부분입니다.

int num_bytes = argv[1]; 
.... 
printf("Max number of bytes: %d", num_bytes); 

나는 하나의 인수 만 함수에 전달했습니다. argv [1]을 int 형으로 캐스팅하려고 시도했지만, 역시 작동하지 않았습니다. 이것이 printf와 관련이 있는지 없는지 확실하지 않습니다. 그것이 단지 그런 것이라면, 나는 상관하지 않습니다. 방금 값을 int로 올바르게 저장했는지 알 필요가있었습니다. argv 문자열 (C 문자열을 생각하는 배열에 대한 포인터의 배열을 알지?)하지만 int로 문자를 캐스팅 할 수있는 줄 알았는데.

답변

5

char **argv은 문자 배열 (또는 문자열)로 간주됩니다. argv 내부의 값을 먼저 정수로 변환해야합니다.

당신은 atoi을 통해이 작업을 수행 할 수 있습니다

int num_bytes = atoi(argv[1]); 
+0

atoi()는 표준 함수가 아닙니다. 내 대답을 참조하십시오. –

+0

@ H2CO3 : 두 방법 모두에 대해 ''을 가져와야합니다. 'atoi()'는 좀 더 직관적이며 (관찰하기 쉽다). – Makoto

+0

당신의 대답이 두 개의 upvotes와 광산 제로를 얻는 이유에 대해 궁금합니다. 여기에 * standard *와 함께 여러 솔루션을 제공합니다. 또한이 특정 결과를 산출하는 이유를 설명합니다. –

0

ARGV는 문자열 배열에 대한 포인터입니다. 전달한 정수 인수를 얻으려면 atoi (argv [1])를 호출해야합니다.