Argument를 체크하여 없는 경우 사용자로 부터 입력을 받도록 하거나
사용법을 화면에 뿌려준 후 프로그램을 종료해야 합니다.
바보 님이 쓰신 글 :
: 안녕하세요 자체 해결을 했습니다.
: ->
http://ebs.dongkang.ac.kr 사이트를 참조를 했습니다.
: 초보자에게는 많은 도움이 될것 같내여.
: 컴파일 할때 Arguments 값을 주고 컴파일을 하니까 되내여..
:
: 근데 문제는 사용자가 Arguments 를 주지 않으면 어떻게 되는건지 모르겠내여.
:
: 바보 님이 쓰신 글 :
: : 안녕하세요..
: : 2시간 반동안 해매다 도저히 모르겠내여..
: : 초보라 어쩔수 없이 질문을 드립니다.
: : 아래 소스를 실행을 하면
: : -----------------------------------------------------
: : Parameter 'argc' is never used
: : -------------------------------------------------------
: : 이런 에러가 발생합니다.
: : 환경은 win2000에서 Turbo C++3.0으로 컴파일을 한겁니다.
: :
: :
: : #include <stdio.h>
: : #include <stdlib.h>
: : #include <string.h>
: :
: : #define MAXLEN 256
: :
: : struct RecForm {
: : long Key1; /* 고객번호 */
: : long Key2; /* {여행거리 + (탑승인원 * 월이용횟수)} */
: : } rec[1001];
: :
: : void main(int argc, char * argv[])
: : {
: : /*static char Line[MAXLEN]; */
: : char Line[MAXLEN]; /* 한 라인 저장 */
: : int i, j, Cnt; /* 첨자(i,j), 자료건수(Cnt) */
: : int Start, End; /* 인수1, 인수2 */
: : FILE *Infp, *Outfp; /* 파일 포인터 */
: :
: : static char Temp2[3], Temp3[4], Temp5[6], Temp6[7]; /* 숫자필드 임시저장 */
: : char Item1; /* 도착지코드의 시작문자 */
: : long Item2, Item3, Item4, Item5; /* 열차요금, 여행거리, 탑승인원, 월이용횟수 */
: :
: : long ExTemp; /* 고객번호, {여행거리 + (탑승인원 * 월이용횟수)} 교환 */
: :
: : Start = atoi(argv[1]); /* 첫번째 파라미터 */
: : End = atoi(argv[2]); /* 두번째 파라미터 */
: :
: : /* 입력파일을 입력전용(텍스트 모드)으로 연다. */
: : Infp = fopen("c:\\C_iT\\data\\abc3015.txt", "rt");
: :
: : Cnt = 0; /* 자료건수 초기화 */
: : rec[4].Key1 = 0; /* 출력자료 초기화 */
: : /* 입력부분(조건에 맞는 자료 배열에 저장) */
: : for(i = 1; i <= End; i++)
: : {
: : fgets(Line, MAXLEN, Infp);
: : if(i >= Start)
: : {
: : Item1 = *(Line+21); /* 도착지코드의 시작문자 */
: : Item2 = atol(strncpy(Temp6, Line+9, 6)); /* 열차요금 */
: : Item3 = atol(strncpy(Temp5, Line+26, 5)); /* 여행거리 */
: : Item4 = atol(strncpy(Temp3, Line+23, 3)); /* 탑승인원 */
: : Item5 = atol(strncpy(Temp2, Line+31, 2)); /* 월이용횟수 */
: :
: : /* 도착지코드가 K로 시작하고 열차요금이 13520 이상인 자료 */
: : if((Item1 == 'K') && (Item2 >= 13520))
: : {
: : Cnt++;
: : /* 고객번호, {여행거리 + (탑승인원 * 월이용횟수)} */
: : rec[Cnt].Key1 = atol(strncpy(Temp5, Line+0, 5));
: : rec[Cnt].Key2 = Item3 + (Item4 * Item5);
: : }
: : }
: : }
: :
: : /* {여행거리 + (탑승인원 * 월이용횟수)}의 값에 따라 정렬 */
: : for(i = 1; i <= Cnt-1; i++)
: : {
: : for(j = i+1; j <= Cnt; j++)
: : {
: : /* 내림차순 정렬, 같은경우 고객번호의 오름차순 정렬 */
: : if((rec[i].Key2 < rec[j].Key2) ||((rec[i].Key2 == rec[j].Key2) && (rec[i].Key1 > rec[j].Key1)))
: : {
: : ExTemp = rec[i].Key1; /* 고객번호 교환 */
: : rec[i].Key1 = rec[j].Key1;
: : rec[j].Key1 = ExTemp;
: :
: : ExTemp = rec[i].Key2; /* {여행거리 + (탑승인원 * 월이용횟수)} 교환 */
: : rec[i].Key2 = rec[j].Key2;
: : rec[j].Key2 = ExTemp;
: : }
: : }
: : }
: :
: : /* 입력파일을 닫는다. */
: : fclose(Infp);
: :
: : /* 출력파일을 출력전용(텍스트모드)으로 연다. */
: : Outfp = fopen("C:\\C_iT\\Data\\ans1.txt", "wt");
: : /* 출력파일에 결과값을 출력한다. - 4번째 고객번호 */
: : fprintf(Outfp, "%d %d %ld\n", Start, End, rec[4].Key1);
: : /* 출력파일을 닫는다. */
: : fclose(Outfp);
: : }
: :