파일 입출력

2022. 3. 4. 07:35
1
2
3
4
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
#define MAX 10000
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main(void){
 
    // 파일 입출력
    // 파일에 어떤 데이터를 저장.
    // 파일에 저당된 데이터를 불러오기.
 
    // fputs, fgets 하나의 쌍 -> 문자열 저장
    char line[MAX]; // char line[10000]
 
    // 파일에 쓰기
    FILE * file = fopen("/Users/janghan/Desktop/Programming/c/test1.txt""wb"); // r 읽기전용 w 쓰기전용 a 이어쓰기 +
                                                                                    //        t txt. b binary data
 
    if(file == NULL){
        printf("파일 열기 실패\n");
        return 1;
    }
    fputs("fputs를 이용해서 글을 적어볼게요.\n", file);
    fputs("잘 적히는지 확인해주세요.\n",file);
 
    // 파일을 열고 나서 닫지 않은 상태에서 어떤 프로그램에 문제가 생기면 데이터 손실 발생 가능 ! 파일은 항상 닫아주는 습관 들이기.
    fclose(file);
 
cs

파일 생성 및 내용 넣기

1
2
3
4
5
6
7
8
9
10
11
12
13
    // 파일 읽기
    FILE * file = fopen("/Users/janghan/Desktop/Programming/c/test1.txt""rb"); // r 읽기전용 w 쓰기전용 a 이어쓰기 +
                                                                                    //        t txt. b binary data
 
    if(file == NULL){
        printf("파일 열기 실패\n");
        return 1;
    }
    while(fgets(line, MAX, file) != NULL){
        printf("%s", line);
    }
 
    fclose(file);
cs

파일 내용 출력

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    // fprintf, fscanf 하나의 쌍
    // printf("%d %d %s",...);
    // scanf("%d %d", &num1,...);
 
 
    //파일에 쓰기
    int num[6= {0,0,0,0,0,0};// 로또 추첨 번호
    int bonus = 0// 보너스 번호
    char str1[MAX];
    char str2[MAX];
 
    FILE * file = fopen("/Users/janghan/Desktop/Programming/c/test2.txt""wb");
    
    if(file == NULL){
        printf("파일 열기 실패\n");
        return 1;
    }
 
    //로또 추첨 번호 저장
 
    fprintf(file, "%s %d %d %d %d %d %d %d\n""추첨번호"1,2,3,4,5,6);
    fprintf(file, "%s %ed\n""보너스 번호"7);
 
    fclose(file);
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    // 파일에 읽기
 
    FILE * file = fopen("/Users/janghan/Desktop/Programming/c/test2.txt""rb");
    
    if(file == NULL){
        printf("파일 열기 실패\n");
        return 1;
    }
    fscanf(file, "%s %d %d %d %d %d %d", str1, &num[0],&num[1],&num[2],&num[3],&num[4],&num[5]);
    printf("%s %d %d %d %d %d %d\n", str1, num[0],num[1],num[2],num[3],num[4],num[5]);
 
    fscanf(file, "%s %d", str2, &bonus);
    printf("%s %d", str2, bonus);
 
cs

 

비밀일기 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
    // 비밀번호를 입력 받아서 맞는 경우에는 비밀 일기를 읽어와서 보여주고, 계속 작성하도록 합니다.
    // 틀린 경우 경고 메세지를 표시하고 종료합니다.
 
    // fgets/ fputs 활용
 
    char line[MAX]; // 파일에서 불로온 내용을 저장할 변수
    char contents[MAX]; // 일기장에 입력할 내용
    char password[20]; // 비밀번호 입력
    char c; // 비밀번호 입력할 때 키 값 확인용(마스킹)
 
    printf("'비밀일기'에 오신 것을 환영합니다.\n");
    printf("비밀번호를 입력하세요 : ");
 
    int i = 0;
    // getchar() enter를 입력받아야 동작 // getch() 키 입력 시 바로바로 동작.
    while(1){
        c = getchar();
        if (c==13)//enter를 나타내는 아스키코드 -> 비밀번호 입력 종료 의미
        {
            password[i] = '\0'// null문자
            break;
        }
        else// 비밀번호 입력 중
            printf("*");
            password[i] = c;
        }
        i++;
    }
    // 비밀번호 : 나도코딩 skehzheld
    printf("\n\n === 비밀번호 확인증 === \n\n");
    if(strcmp(password, "skehzheld"== 0 ) // 비밀번호 일치,, 다르면 -1이나 1과 같은 값이 나옴.
    {
        printf("\n\n === 비밀번호 확인 완료 \n\n");
        char * fileName = "/Users/janghan/Desktop/Programming/c/secretdiary.txt";
        FILE * file = fopen(fileName, "a+b");// 파일이 없으면 생성을 하고, 파일이 있으면 append를 한다.(뒤에서부터 내용을 추가)
        if(file == NULL){
            printf("파일 열기 실패\n");
            return 1;
        }
        while (fgets(line,MAX, file) != NULL)
        {
            printf("%s", line);
        }
        printf("\n\n 내용을 계속 작성하세요. 종료하시려면 EXIT를 입력하세요\n\n");
 
        while(1){
            scanf("%[^\n]", contents); // 새 줄 이 나오기 전까지, 줄바꿈이 나오기 전까지 모든 몬자열을 다 받아들여라.(한 문장씩)
            getchar(); // enter 입력 (\n) flush 처리.
            if(strcmp(contents, "EXIT" == 0)){
                printf("비밀일기 입력을 종료합니다\n\n");
                break;
                }
            fputs(contents, file);
            fputs("\n", file); // Enter를 위에서 무시 처리 하였으므로 임의로 추가.
            }
    }
    fclose(file);
    else{// 비밀번호 틀린 경우
        printf(" === 비밀번호가 틀렸어요 ===\n\n");
        printf("who are you ?;");
    }
 
 
    return 0;
 
}
cs

 

출처 : https://www.youtube.com/watch?v=q6fPjQAzll8&t=494s

'Programming > C\C++' 카테고리의 다른 글

struct 구조체  (0) 2022.03.04
MultiDimensional Array  (0) 2022.03.04
*포인터*  (0) 2022.03.04
Initial Array && ASCII  (0) 2022.02.25
functions setting 과 활용  (0) 2022.02.25

BELATED ARTICLES

more