[C] 파일 입출력 - 비밀 일기 프로젝트

2022. 4. 24. 21:11·언어/C
728x90
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

#define MAX 10000

int main(void)
{
	char line[MAX];
	char contents[MAX];
	char password[20];
	char c;

	printf("=== 나의 비밀일기 ===\n");
	printf("비밀번호를 입력해주세요 : ");

	int i = 0;
	while (1)
	{
		c = getch();
		if (c == 13)
		{
			password[i] = '\0';
			break;
		}
		else
		{
			printf("*");
			password[i] = c;
		}
		i++;
	}

	printf("\n\n== 비밀번호 확인중 ==\n\n");
	if (strcmp(password, "a") == 0)
	{
		printf("비밀번호가 일치합니다.\n");
		char* fileName = "C:\\Users\\UserName\\Desktop\\secretdiary.txt";
		FILE* file = fopen(fileName, "a+b");

		if (file == NULL)
		{
			printf("파일이 존재하지 않습니다.\n");
			return 1;
		}

		while (fgets(line, MAX, file) != NULL)
		{
			printf("%s", line);
		}
		printf("새로운 내용을 입력하세요.\n종료하고 싶으시면 EXIT를 입력하세요.\n\n");

		while (1)
		{
			scanf("%[^\n]", contents);
			getchar();

			if (strcmp(contents, "EXIT") == 0)
			{
				printf("입력을 종료합니다.\n");
				break;
			}
			fputs(contents, file);
			fputs("\n", file);
		}
		fclose(file);
	}

	else
	{
		printf("비밀번호가 틀렸습니다.\n");
	}

	return 0;
}

1. 프로젝트에서 사용자가 비밀번호를 입력하면, 파일의 비밀번호와 확인한다.

1-1. 비밀번호는 *로 입력되며, 사용자가 엔터를 치기 직전까지의 값을 비밀번호라고 인식한다.

2. 비밀번호가 일기의 비밀번호와 일치하면 원하는 위치에 파일을 생성한다. (일치하지 않으면 오류 메시지 전송)

3. 생성된 파일에 있는 모든 내용을 출력한다. (파일 위치에 파일이 존재하지 않으면 프로그램 종료)

4. 새로운 내용을 입력한다. (그만 입력하고 싶으면 EXIT 입력)

5. 입력한 내용을 모두 파일에 넣는다.

6. 프로그램을 닫는다.

​

-> 당연한 얘기지만 이렇게 순서를 한글로 써놓고 하나하나 프로그래밍하면 프로젝트 짜기도 쉽고 오류 찾기도 간편하다. 물론 프로젝트를 이해해야 한글로 옮기는 것도 가능하겠지만 ㅠㅠ

​

파일을 사용하기 위해서는 fputs,fgets, fopen 등의 함수를 사용한다.

​

1. fputs

파일에 문자열을 쓸 때 사용하는 함수다.

fputs("contents", file); 처럼 사용한다. file이라는 파일에 contents라는 문자를 삽입하라는 뜻이다.

​

2. fgets

파일에서 문자열을 가져올 때 사용하는 함수다.

fgets(line, MAX, file); 처럼 사용한다. file이라는 파일에서 MAX(==10000)의 크기의 문자열을 가져와서 line에 삽입하라는 뜻이다.

​

3. fopen

파일을 가져와 열라는 뜻이다.

fopen(fileName, "a+b"); 처럼 사용한다. fileName(C:\\Users ... .txt)을 가져와 열되, a+b(파일이 없으면 생성하고, 있으면 내용을 추가하라)의 형식을 띄라는 뜻이다.

+) a+b 외에도 r, w, a 등등 여러가지 인자가 존재한다.

​

4. fclose

열었던 파일을 닫으라는 뜻이다.

fclose(file); 처럼 사용한다. file이라는 파일을 닫으라는 뜻이다. 파일을 연 후 닫지 않으면 컴퓨터가 불필요한 동작을 반복하기 때문에 반드시 닫아주어야 한다.

728x90

'언어 > C' 카테고리의 다른 글

[C] 포인터 - 어항 속 물고기 게임  (0) 2022.04.25
[C] define 매크로 함수 사용하기  (0) 2022.04.24
[C] 배열 - 발모제 찾기 게임  (0) 2022.04.24
[C] 함수 - 컴퓨터와 가위바위보하기  (0) 2022.04.24
[C] 조건문 - 업 다운 게임 만들기  (0) 2022.04.24
'언어/C' 카테고리의 다른 글
  • [C] 포인터 - 어항 속 물고기 게임
  • [C] define 매크로 함수 사용하기
  • [C] 배열 - 발모제 찾기 게임
  • [C] 함수 - 컴퓨터와 가위바위보하기
돌멩이수프
돌멩이수프
Information technology
  • 돌멩이수프
    WHAT DOES "IT" STAND FOR?
    돌멩이수프
  • 전체
    오늘
    어제
    • 분류 전체보기 (239)
      • 언어 (73)
        • html (3)
        • css (1)
        • java (6)
        • C (26)
        • C++ (2)
        • C# (29)
      • 공부 (7)
        • Unity (43)
        • 게임 서버 (26)
        • 네트워크 (5)
        • 데이터베이스 (7)
        • EFCore (19)
        • 기타 (14)
        • Git (5)
        • 운영체제 (1)
        • 소프트웨어공학 (21)
      • 2024-여름 (12)
      • 자기 관리 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Entityfamework
    tcp
    백준
    HTML
    EFCore
    EntityFramework
    유니티
    코딩
    C
    java
    C#
    라즈베리파이
    unity
    자바
    게임서버
    coding
    Python
    네트워크
    C언어
    디자인패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
돌멩이수프
[C] 파일 입출력 - 비밀 일기 프로젝트
상단으로

티스토리툴바