본문 바로가기

프로그램/C언어

【C언어】 txt 파일을 읽고 버블정렬하여 출력하는 소스코드

C언어.

이미 만들어져있고 데이터가 있는 txt 파일을 읽어들여 버블정렬하여 다른 txt파일로 출력하는 소스 코드입니다.

주석으로 간단하게 설명을 붙여두었습니다.

제일 아래에 파일을 첨부해뒀습니다.



#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void printArray(int* ,int );  // 함수 선언
void swap(int* , int*);
void main() {
        int i, k;
        int data[5];
        int maxindex;
        FILE *fp = NULL;
        fp = fopen("qwer.txt", "r");  // 파일 열기, 이때 qwer.txt 라는 파일이 소스폴더 내에 있어야 함.
        if (fp == NULL) {      // 파일을 열기를 성공/실패 했을 경우
               printf("파일 열기 실패\n");
               exit(1);       // 강제 종료
        }
        else
               printf("파일 열기 성공\n");
        k = 0;
        while (fscanf(fp, "%d", &i) != EOF) { // 파일 내 데이터를 읽어들임
               data[k] = i;
               k++;
        }
        fclose(fp);            // qwer.txt 파일을 닫음.
        printArray(data, 5);
        printf("\n");
        for (k = 0 ; k < 5 ; k++) {           // 버블 정렬 소스 시작
               for (i = 0 ; i< 4 - k ; i++) {
                       if ( data[i] > data[i+1] ) {
                              swap(&data[i+1], &data[i]);
                       }
               }
        }       // 버블 정렬 소스 끝
        printArray(data, 5);
        fp = fopen("output.txt", "w");               // 소스가 있는 폴더 내에 output.txt라는 파일이 생성됨.
        for (k = 0; k<5; k++) {
               fprintf(fp, "%d ", data[k]);
        }
        fclose(fp);            // output.txt 파일을 닫음.
}
void printArray(int array[], int size) {     // 배열을 출력해주는 함수
        int i;
        for (i = 0; i<size; i++) {
               printf("%d ", array[i]);
        }
        printf("\n");
}
void swap(int *num1, int *num2) {     // 위치 바꾸는 함수
        int temp;
        temp = *num2;
        *num2 = *num1;
        *num1 = temp;
}



  • 왜때문이죠 2018.06.22 13:02 댓글주소 수정/삭제 댓글쓰기

    안녕하세요 이거 c언어로 하려는데 exit(1); 에서 자꾸 빨간줄이 나오는데 어떡하나요?

  • 왜때문이죠 2018.06.22 13:04 댓글주소 수정/삭제 댓글쓰기

    위에 고치고 실행했는데 파일열기성공 메세지만 뜨고 그 다음은 진행이 안되는데 어떡하죠ㅠㅠ

    • 음.. 제가 고민해봤는데 정확한 소스가 있다면, 확인해볼텐데 지금 말씀하신 정보로 제가 판단하기에는 너무 지식이 제가 부족한 듯 합니다 ㅠㅜ 도움이 못되서 죄송합니다!