대학 C 프로그래밍 과제 도와주세요

an0n의 이미지
  • 삽입정렬 (명령행 인자, 입출력 redirection 이용)
    • 2가지 방법(입출력 redirection, 명령행 인자)을 사용할 수 있도록 삽입정렬 프로그램을 작성하라.
    • 표준입출력 방식의 프로그램을 작성하고, input/output redirection을 이용하여 입출력하라.
    • 명령행 인자를 이용하여 프로그램을 작성하고 실행하라.
  • (중략)
  • 다음 방법에 의해 프로그램을 작성하고 실행하라. (계속)
    • (projectName/Debug 디렉토리로 이동했으면,)
    • 메모장을 이용하여, 정렬할 데이터를 넣은 data.txt 파일을 만든다.
    • 명령행 인자 프로그램을 실행하려면 다음과 같이 명령한다. (프로젝트 이름이 sortCLA라고 가정한다)
      sortCLA data.txt
    • 입출력 redirection 프로그램을 실행하려면 다음과 같이 명령한다. (프로젝트 이름이 sortRD라고 가정한다)
      sortRD < data.txt
      softRD < data.txt > result.txt

이렇게 해서 일단 제가 코드를 다음과 같이 작성했는데요.

#include <stdio.h>
 
int main(int argc, char* argv[]) {
    FILE* input, *result;
    int a[5] = { 0, }, tmp, i, j, key;
    fopen_s(&input, argv[2], "r");
    for (int i = 0; fscanf_s(input, "%d", &tmp) != EOF; i++) { 
        a[i] = tmp;
    }
    fclose(input);
    for (j = 1; j < 5; j++) {
        key = a[j]; i = j - 1;
        while (i >= 0 && a[i] > key) {
            a[i + 1] = a[i];  i--;
        }
        a[i + 1] = key;
    }
    fopen_s(&result, argv[4], "w");
    fclose(result);
    fopen_s(&result, argv[4], "a");
    for (i = 0; i < 5; i++) { 
        fprintf_s(result, "%d\n", a[i]);
    }
    fclose(result);
    return 0;
}

명령행에서 입력할때 data.txt가 생성이 되고 result.txt는 작성이 되었는데, result.txt에 아무 내용이 없습니다. 어떻게 된 일인지 도와주세요.

세벌의 이미지

for (i = 0; i < 5; i++) { 
        printf("%d\n", a[i]); // 원하는 값이 제대로 들어가는지 확인
 
        fprintf_s(result, "%d\n", a[i]);
    }
이런 식으로요.
raymundo의 이미지

일단 argv 배열이 아마도 생각하신 것처럼 값이 들어가 있지 않을 겁니다. 위에 세벌님 말씀처럼 프로그램에 사용되는 변수들의 값이 제대로 들어가 있는지부터 확인해 보세요.

좋은 하루 되세요!