// [ 문제24-1 : 문자열 방식의 데이터 입출력 ]
// 문제1,2,3 :
// 이름 주민번호 전화번호를 파일로 저장
// 형식:#이름 :윤성우
// 정상 입력 결과 출력 확인
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
typedef struct
{
char name[40];
char pid[40];
char phone[40];
char ffood[40];
char hobby[40];
} Person;
void inputData(Person* ptr)
{
printf("이름 입력 :");
fgets(ptr->name, 40,stdin);
printf("주민번호 입력 :");
fgets(ptr->pid, 40, stdin);
printf("전화번호 입력 :");
fgets(ptr->phone, 40, stdin);
printf("좋아하는 음식 입력 :");
fgets(ptr->ffood, 40, stdin);
printf("취미 :");
fgets(ptr->hobby, 40, stdin);
}
int fileWrite(char* fname, Person* p)
{
FILE* fp;
fopen_s(&fp, fname, "wt");
if (fp == NULL)
{
printf("파일 오픈 실패!");
return -1;
}
fputs("#이름 :", fp);
fputs(p->name, fp);
fputs("#주민번호 :", fp);
fputs(p->pid, fp);
fputs("#전화번호 :", fp);
fputs(p->phone, fp);
fputs("#좋아하는 음식 :", fp);
fputs(p->ffood, fp);
fputs("#취미 :", fp);
fputs(p->hobby, fp);
fclose(fp);
return 0;
}
int fileRead(char* fname, Person* p)
{
char str[40];
FILE* fp;
fopen_s(&fp, fname, "rt");
if (fp == NULL)
{
printf("파일 오픈 실패!");
return -1;
}
while (fgets(str, 40, fp) != NULL)
{
printf("%s", str);
}
if (feof(fp) != 0)
return 0;
else
return -1;
fclose(fp);
}
int main(void)
{
Person p;
char* filename = "mystory.txt";
inputData(&p);
fileWrite(filename, &p);
fileRead(filename, &p);
return 0;
}
// [ 문제24-2 : 파일의 크기를 바이트 단위로 계산하기 ]
// ftell를 이용한 파일크기 확인 (File* 전달)
// 원 위치로 이동 필요
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int fileSize(FILE* fp)
{
long fpos,fsize;
fpos = ftell(fp);
fseek(fp, 0, SEEK_END);
fsize=ftell(fp);
fseek(fp, fpos, SEEK_SET);
return fsize;
}
int main(void)
{
char str[200];
char* filename = "mystory.txt";
FILE* fp;
fopen_s(&fp, filename, "rt");
while (fgets(str, 100, fp) != NULL)
{
fputs(str,stdout);
printf("파일 size :%ld\n\n", fileSize(fp));
}
return 0;
}
'윤성우 열혈강의 C 정리' 카테고리의 다른 글
[ C 열혈강의 ] 26장 연습문제 : 매크로와 선행처리 (0) | 2022.07.09 |
---|---|
[ C 열혈강의 ] 25장 연습문제 : 메모리 관리와 메모리의 동적 할당 (0) | 2022.07.09 |
[ C 열혈강의 ] 23장 연습문제 : 구조체와 사용자정의 자료형2 (0) | 2022.07.08 |
[ C 열혈강의 ] 22장 연습문제 : 구조체와 사용자정의 자료형1 (0) | 2022.07.08 |
[ C 열혈강의 ] 22장 연습문제 : 구조체와 사용자정의 자료형1 (0) | 2022.07.08 |