#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
void addContact(FILE* fp);
void displayContact(FILE* fp);
void updateContact(FILE* fp);
void saveContacts(FILE* fp);
void loadContacts(FILE* fp);
void menu();
typedef struct Contact {
char name[SIZE];
char address[SIZE];
char phone[SIZE];
char detail[SIZE];
} PERSON;
int main() {
FILE* fp;
int select;
if ((fp = fopen("out.txt", "r+")) == NULL) {
fprintf(stderr, "Cannot open file. \n");
exit(1);
}
while (1) {
menu();
printf("Enter your choice: ");
scanf("%d", &select);
switch (select) {
case 1: addContact(fp); break;
case 2: displayContact(fp); break;
case 3: updateContact(fp); break;
case 4: saveContacts(fp); break;
case 5: loadContacts(fp); break;
case 6:
fclose(fp);
exit(0); // Exiting the program
default:
printf("Invalid choice. Please enter a valid option.\n");
break;
}
}
fclose(fp);
return 0;
}
void menu() {
printf("Address Book Menu: \n");
printf("1. Add a contact \n");
printf("2. Display contacts \n");
printf("3. Update a contact \n");
printf("4. Save contacts to file (out.txt) \n");
printf("5. Load contacts from file (in.txt) \n");
printf("6. Exit \n");
printf("====================================================\n");
}
PERSON get_record() {
PERSON data;
printf("Enter name: ");
scanf(" %[^\n]", data.name); // Read until newline
printf("Enter address: ");
scanf(" %[^\n]", data.address);
printf("Enter phone: ");
scanf(" %[^\n]", data.phone);
printf("Enter detail: ");
scanf(" %[^\n]", data.detail);
return data;
}
void addContact(FILE* fp) {
PERSON data = get_record();
fseek(fp, 0, SEEK_END);
fwrite(&data, sizeof(data), 1, fp);
printf("Contact added successfully.\n");
}
여기서 addContract로 입력하면 "한국어 인코딩으로 로드하는 동안 일부 바이트가 유니코드 대체 문자로 바뀌었습니다."라고 계속 뜨는데 서명 없는 UTF-8 인코딩 자동 검색 옵션 켜도 마찬가지더라고요. 혹시 해결 방법을 아시는 분 계시나요