int main(int argc, char *argv[])
{
int param = *argv[1];
printf("Parameter = %d\n",param);
}
나는 그것을 실행합니다 ./myProgram 5와 나는 5를 출력으로 기대합니다. 내가 얻는 것은 웬일인지 53이다.매개 변수가 C로 전달됩니다
int main(int argc, char *argv[])
{
int param = *argv[1];
printf("Parameter = %d\n",param);
}
나는 그것을 실행합니다 ./myProgram 5와 나는 5를 출력으로 기대합니다. 내가 얻는 것은 웬일인지 53이다.매개 변수가 C로 전달됩니다
선언에서 알 수 있듯이 argv는 char 포인터의 배열입니다. 즉, 주 함수에 숫자 값 5가 전달되지 않고 (아마도 ASCII 또는 UTF8) 인코딩 된 문자열 값 "5"가 전달됩니다. ASCII table을 보면 문자 "5"가 숫자 값 53으로 ASCII로 인코딩되어있는 것을 볼 수 있습니다. 문자 "a"가 숫자 97로 인코딩되어 있으므로 ./myProgram a
을 실행하면 Parameter = 97
을 출력해야합니다.
ASCII 인코딩 된 문자열의 숫자 값을 가져 오려면 atoi()를 사용할 수 있습니다. 쓰기
int main(int argc, char *argv[]) {
int param = atoi(argv[1]);
printf("Parameter = %d\n",param);
}
C는 암시 적으로 배열의 내용을 모든 유형으로 변환하지 않습니다.
는0
가
strtol()
사용을 고려
int
에
char
-array (A C "문자열")로 끝나는 변환하려고합니다.
argv의 각 구성원은 문자열이며, 정수 인 것처럼 취급합니다. 정수를 원한다면 예를 들어 atoi를 사용하여 추출해야합니다. – fvu
힌트 : 53 = '5'(ASCII)입니다. – nneonneo