728x90

문제1) 프로그램 상에서 MYSTORY.TXT라는 이름의 파일을 생성해서 본인의 이름, 주민번호, 전화번호를 저장하는 프로그램을 작성하자. 단 저장의 형태는 다음과 같아야 한다.(#문자도 함께 저장되어야한다.)

    #이름: 윤성우

    #주민번호:900208-1012589

    #전화번호: 010-1111-2222

그리고 저장이 완료되면 메모장으로 확인이 가능해야 한다.

#include <stdio.h>

int main(void){
    FILE * fp=fopen("mystory.txt", "wt");
    fputs("#이름: 윤성우\n",fp);
    fputs("#주민번호: 920208-1012589\n",fp);
    fputs("#전화번호: 010-1111-2222\n",fp);
    fclose(fp);
    return 0;

}

이 문제는 이제 새로운 방식인 피일입출력 방식을 활용할 줄 안다면 크게 어렵지 않다. fopen을 통해서 파일을 열고 추가를 해야하므로 쓰기 형식으로 열어준다. 그리고 fputs로 넣어주면 된다. 반드시 줄바꿈을 넣어주고 fp 라는 것으로 넣어주게 된다.  필요한 것이 끝난다면 파일 닫아주기도 잊지말고 하면 어렵지 않다.


문제2) 문제1엥서 작성한 파일에 데이터를 추가하자. 추가할 데이터는 즐겨먹는 음식의 정보와 취미이다 입력의 형태는 다음과 같아야 한다.

    #즐겨먹는 음식: 짬뽕, 탕수육

    #취미: 축구

마찬가지로 추가가 완료되면 제대로 추가되었는지 메모장으로 확인해보기 바란다.

#include <stdio.h>

int main(void){
    FILE * fp=fopen("mystory.txt", "at");
    fputs("#즐겨먹는 음식: 짬뽕, 탕수육\n",fp);
    fputs("#취미: 축구\n", fp);
    fclose(fp);
    return 0;

}

이 문제는 앞의 문제와 연결되는 부분이다. 그렇기 때문에 앞문제가 제대로 텍스트 파일에 저장되었는지 확인후에 하는 것이 좋다. 그리고 이것을 출력한 뒤에도 확인한다. 단, 여러번 확인하게 될경우 계속 추가가 되는 것을 보았다. 그래서 직접 지워준 후에 원하는 방식으로 되었는지 컴파일해서 확인했다. 앞에 원리와 크게 다르지 않고 추가한다고 했으므로 wt 즉 쓰기 방식이 아닌 추가방식 at를 활용하면 된다. 그리고 파일 닫는 것 잊지 않으면 된다.


문제3) 문제 1과 2에서 생성한 파일에 저장된 정보 전체를 출력하는 프로그램을 작성하자

#include <stdio.h>

int main(void){
    char str[30];
    FILE * fp=fopen("mystory.txt", "rt");
    if(fp==NULL){
        puts("파일오픈 실패!");
        return -1;
    }
    fgets(str,sizeof(str),fp);
    printf("%s", str);
    fgets(str,sizeof(str),fp);
    printf("%s", str);
    fgets(str,sizeof(str),fp);
    printf("%s", str);
    fgets(str,sizeof(str),fp);
    printf("%s", str);
    
    fclose(fp);
    return 0;

}

앞의 문제에서는 입력 값을 넣어주었다고 보면 이제는 출력의 시간이다. 일단 문자열도 선언해주고 읽어야 하므로 read방식인 rt를 이용한다. 빈 값이면 NULL값이 있을 때를 만들어서 return을 해주게 된다. 출력의 방식은 fgets이다. 그리고 괄호안에 들어가는 것은 str문자열에 str문자열 크기만큼 fp를 넣어준다는 의미이다. 그리고 출력을 해주면 된다. 줄마다 출력을 해줘야 하므로 여러번 똑같은 코드가 반복된다. 읽기 모드에서도 닫는 것은 잊지 말자

728x90

'C language > 열혈C 문제풀이' 카테고리의 다른 글

[C] 열혈C 문제풀이 26  (0) 2021.08.12
[C] 열혈 C 문제풀이 25  (0) 2021.08.12
[C] 열혈C 문제풀이 17-1  (0) 2021.08.12
[C] 열혈C 문제풀이 16-1  (0) 2021.08.12
[C] 열혈C 문제풀이 14-1  (0) 2021.08.12

+ Recent posts