char *argv[BUFSIZ];
포인터 배열을 선언한 후
memset(argv, 0, sizeof(argv));
argv[0] = strtok(command, " ");
for(;;)
{
argv[++i] = strtok(NULL, " ");
if(argv[i] == NULL) break;
}
이 코드가 반복문에 의해 실행되면서 argv를 초기화하고 command를 입력받아 공백을 기준으로 잘라서 argv에 저장하는 소스입니다.
반복문 최초 실행 시에는 argv[0], argv[1], ... 순서로 잘 들어가지만
두번째 실행 시에는 argv[0], ..., argv[n], ... 으로 중간에 NULL이 삽입되어 있습니다.
NULL없이 배열에 삽입하기 위해
memset을 사용하지 않고 다른 방법을 사용하거나 위의 for(;;)문 안을 수정해야할 것 같은데
memset 말고는 어떤 함수가 있는지 잘 모르겠고,
for(;;) 내부는 어떻게 바꿔줘야 할지 모르겠습니다.
도움 주시면 감사하겠습니다 (_ _)