문자열을 int 숫자로 변경하는 함수 atoi() 사용법
위와 같이 출력하려고 코드를
void fork16(){ if(fork()==0){ printf("Child1: pid=%d pgrp=%d",getpid(),getpgrp()); if(fork()==0){ printf("Child2: pid=%d pgrp=%d",getpid(),getpgrp()); } while(1); } }
이밑에는 main(int argc char * argv[])
atoi(argv[1]==16)
fork16();
이렇게 해서 main에 인자값 넘기면 실행하게 하였는데
이렇게하고 ./fork 16 넣으니까 아무것도 출력이 안뜹니다. 뭐가 잘못됐을까요 ?
다른 fork 함수들은 실행 잘됩니다.
-------------------------------------------------------------------------------------------------------------------------------
안녕하세요. 리얼리눅스 입니다.
atoi() 함수를 잘못 사용하셨습니다.
atoi() 함수는 인자(input)를 문자열(char *) 로받는데
보내주는 코드는 atoi(argv[1] == 16) 으로 조건문을
안에 넣어서 코드를 구성하였습니다.
따라서 (예를 들면) 아래처럼 코드가 바뀌어야 할것같습니다.
int val = atoi(argv[1]);
if (val == 16) {
// 원하는 코드를 작성
}
아래는 atoi() 간단한 예제코드이니 참고하시기 바랍니다.
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int val; char *str = "1234"; val = atoi(str); printf("%d\n", val); }
*관련 교육을 찾으신다면 리얼리눅스 교육과정 중 리눅스 시스템 핵심정리 수업을 추천드립니다.