파일 입출력
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 |
'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 |