#include <stdio.h>
#include <stdlib.h>
#define MAX 10000
int main(void) {
// 파일 입출력
// 파일에 어떤 데이터를 저장
// 파일에 저장된 데이터를 불러오기
// fputs , fgets 쌍 -> 문자열 저장
// fprintf, fscanf 쌍
//char line[MAX]; // char line[10000]
////파일 열기
//FILE* file = fopen("c:\\test1.txt", "wb"); // r : read(읽기) , w : write(쓰기) , a : append(이어쓰기) // t(text) b(바이너리 데이터)
//if (file == NULL) {
// printf("파일 열기 실패\n");
// return 1;
//}
//fputs("fputs를 이용해서 글을 적어볼게요 \n", file);
//fputs("잘 적히는지 확인해주세요.\n", file);
////파일 닫기
//// 파일을 열고나서 닫지 않은 상태에서 어떤 프로그램에 문제가 생기면?
//// 데이터 손실이 발생 가능. 파일을 닫아주는 습관을 길러주세요.
//fclose(file);
//FILE* file = fopen("c:\\test1.txt", "rb"); // r : read(읽기) , w : write(쓰기) , a : append(이어쓰기) // t(text) b(바이너리 데이터)
//if (file == NULL) {
// printf("파일 열기 실패\n");
// return 1;
//}
//while (fgets(line, MAX, file) != NULL) {
// printf("%s", line);
//}
////fputs("fputs를 이용해서 글을 적어볼게요 \n", file);
////fputs("잘 적히는지 확인해주세요.\n", file);
////파일 닫기
//// 파일을 열고나서 닫지 않은 상태에서 어떤 프로그램에 문제가 생기면?
//// 데이터 손실이 발생 가능. 파일을 닫아주는 습관을 길러주세요.
//fclose(file);
// fprintf , fscanf 쌍
// printf("%d %d %s ..........");
// scanf ("%d %d", &num1);
int num[6] = { 0, }; // 추첨 번호
int bonus = 0; // 보너스 번호
char str1[MAX];
char str2[MAX];
FILE* fp = fopen("d:\\test2.txt", "w");
if (fp == NULL) {
printf("파일 열기 실패 \n");
return 1;
}
// 로또 추첨 번호 저장
fprintf(fp, "%s %d %d %d %d %d %d\n", "Number", 1, 2, 3, 4, 5, 6);
fprintf(fp, "%s %d\n", "Bonus", 7);
fclose(fp);
// 파일 읽기
FILE* fp1 = fopen("d:\\test2.txt", "r");
if (fp1 == NULL) {
printf("파일 열기 실패 \n");
return 1;
}
fscanf(fp1, "%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(fp1,"%s %d",str2, &bonus);
printf("%s %d\n", str2, bonus);
fclose(fp1);
return 0;
}
#include <stdio.h>
// 비밀 번호를입력 받아서 맞는 경우 비밀일기를 읽어와서 보여주고 계속 작성하도록 합니다.
// 틀린 경우 경고 메시지를 표시하고 종료합니다.
#define MAX 10000
int main() {
// fgets fputs
char line[MAX]; // 파일에서 불러올 내용을 저장할 변수
char contents[MAX]; //일기장에 입력할 내용
char password[20]; // 비밀번호 입력
char c; // 비밀번호 입력할 때 키값 확인용 (마스킹)
printf("비밀 일기에 오신 것을 환영합니다.\n");
printf("비밀 번호를 입력하세요 : ");
// getchar() / getch()의 차이
// getchar() = ENTER를 입력 받아야 동작
// getch() 키 입력시에 바로바로 동작함
int i = 0;
while (1) {
c = getch();
if (c == 13) // Enter 비밀번호 입력 종료
{
password[i] = '\0';
break;
}
else { // 비밀번호 입력 중
printf("*");
password[i] = c;
}
i++;
}
// 비밀번호 나도코딩 skehzheld
printf("\n\n === 비밀번호 확인 중... ===\n\n");
if (strcmp(password, "skehzheld") == 0) { // 비밀번호 일치
printf("=== 비밀번호 확인 완료 === \n\n");
char* fileName = "diary.txt";
FILE* fp = fopen(fileName, "a+b"); // 파일이 없으면 생성, 파일이 있으면 append한다. 뒤에서 내용을 추가한다.
if (fp == NULL) {
printf("파일 열기 실패\n");
return 1;
}
while (fgets(line, MAX, fp) != NULL) {
printf("%s", line);
}
printf("\n\n 내용을 계속 작성하세요! 종료하시려면 EXIT를 입력하세요 \n\n");
while (1) {
scanf("%[^\n]", contents); // 새 줄 \n이 나오기 전까지 읽어들임 (한 문장씩)
getchar(); // Enter 입력 (\n) Flush 처리
if (strcmp(contents, "EXIT") == 0) {
printf("비밀일기 입력을 종료합니다.\n\n");
break;
}
fputs(contents, fp);
fputs("\n", fp); // 엔터를 위한 추가 엔터키를 무시했으므로 임의로 추가
}
fclose(fp);
}
return 0;
}