Code example
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char* argv[])
{
FILE *fp_inputdeck ;
int count;
char args_error_flag = 0;
if (argc > 1) {
for (count = 1; count < argc; count+=2) {
if(!strcmp(argv[count],"-inp")) {
printf("-inp : %s \n", argv[count+1]);
fp_inputdeck = fopen(argv[count+1], "r");
if (fp_inputdeck == NULL) {
printf("Error opening %s file. path : %s \n",argv[count], argv[count+1]);
exit(1);
}
} else {
printf("Invalid command option: %s\n", argv[count] );
args_error_flag = 1;
};
}
if(args_error_flag == 1) {
printf("Check your comand option\n");
exit(1);
}
} else {
printf("Invalid arguments number.\n");
exit(1);
}
fclose(fp_inputdeck);
return 0;
}
주요 변수 설명
*fp_inputdeck
: 파일을 가리키는 파일포인터 변수 선언
args_error_flag = 0
: 커맨드 옵션(포트 명)이 잘못 입력된 경우, 이 변수의 값을 1
로 변경
주요 코드 설명
...
[1] if (argc > 1) {
[2] for (count = 1; count < argc; count+=2) {
[3] if(!strcmp(argv[count],"-inp")) {
printf("-inp : %s \n", argv[count+1]);
[4] fp_inputdeck = fopen(argv[count+1], "r");
[5] if (fp_inputdeck == NULL) {
printf("Error opening %s file. path : %s \n",argv[count], argv[count+1]);
exit(1);
}
[6] } else {
printf("Invalid command option: %s\n", argv[count] );
args_error_flag = 1;
};
}
[7] if(args_error_flag == 1) {
printf("Check your comand option\n");
exit(1);
}
} else {
printf("Invalid arguments number.\n");
exit(1);
}
[8] fclose(fp_inputdeck);
...
- 프로그램 실행 시
argc
값을 확인하여, 커맨드 옵션과 실행 파일 경로가 입력되어 있는지 확인하고, 정상적으로 입력이 되지 않은 경우 에러 메시지와 함께 프로그램 종료
- 프로그램 실행 시 옵션을 하나도 입력하지 않으면
argc
값은 1이다. 따라서 1 이상 값이 입력이 되었는지 확인한다.
for
문을 이용해 argc
개수 까지 count
값을 2씩 증가하면서 for
문 수행
- 예제에서
argc
값이 3이고, count
값이 1 이므로 for
문이 한번만 수행 됨
- strcmp() 함수를 이용해 입력된 커맨드 옵션과
"-inp"
값을 비교해 원하는 옵션 값이 입력 되었는지 확인한다.
- 비교하는 문자열이 일치하는 경우 strcmp() 는 0 값을 리턴한다. 따라서
!
연산자를 이용해 일치하는 경우 조건문이 참이 되도록 하였다.
- 커맨드 옵션을
-inp
가 아닌 다른 옵션 명으로 설정 하고 싶다면, 이 부분을 수정하면 된다.
- fopen() 함수를 이용해
argv[count+1]
에 저장되어 있는 경로의 실행 파일을 읽기 전용("r"
옵션 사용)으로 연다.
- 파일 포인터를 반환하여
inputdeck
파일포인터에 저장한다.
- 파일 포인터가 정상적으로 반환되지 않는 경우
NULL
값을 리턴하고, 파일 포인터 값이 NULL
인 경우 에러 매시지를 표시하고 프로그램을 종료한다.
- 커맨드 옵션이 잘못 입력된 경우 에러 메시지를 표시하고
args_error_flag
값을 1로 변경하고 잘못 입력한 커맨드 옵션을 출력
args_error_flag
가 1인 경우 (커맨드 옵션이 잘못 입력 되었을 경우) 프로그램 종료 한다.
- fclose() 함수를 이용해 파일 포인터의 연결을 끊는다.