파일의 내용을 문자 단위로 읽어서 개행문자('\n')단위로 배열에 저장한다.
포인터 배열을 이용한다.
#include <stdio.h>
#include <windows.h>
#define BUFFER_SIZE 1024 // 버퍼의 크기
#define FILE_NAME "exfile.txt" // 파일 이름
// 에러 출력 함수
void ErrorHandling(char *message);
int main(void)
{
char Buffer[BUFFER_SIZE]; // 버퍼 사이즈
int Count = 0; // 카운트 값 "문자의 카운트 값"
char *line[BUFFER_SIZE]; // 문자열이 저장될 배열 개행문자 단위로 기록된다
int Temp = 0; // 개행문자의 갯수를 나타낸다.
FILE *fp;
fp = fopen(FILE_NAME, "r");
if ( NULL == fp )
{
ErrorHandling("Error fopen()");
}
// 버퍼를 초기화 한다.
memset(Buffer, 0, sizeof(Buffer));
// 파일의 끝까지 읽는다.
while(!feof(fp))
{
// 파일의 데이터를 문자단위로 읽어, Buffer에 저장한다.
Buffer[Count] = fgetc(fp);
if ( 0 == feof(fp) && -1 == Buffer[Count] ) // 에러출력
{
ErrorHandling("Error fgetc()");
}
// 개행문자
if ( '\n' == Buffer[Count] )
{
// 버퍼의 길이를 구한다. NULL값 포함하여 구한다.
int Str_Len = strlen(Buffer)+1;
// 문자열의 길이만큼 배열을 동적할당하여 준다.
line[Temp] = (char*)malloc(sizeof(char)*Str_Len);
memset(line[Temp], 0, sizeof(char)*Str_Len);
memcpy(line[Temp], Buffer, sizeof(char)*Str_Len);
memset(Buffer, 0, sizeof(char)*Str_Len);
Temp++;
Count = 0;
continue;
}
Count++;
}
system("pause");
return 0;
}
void ErrorHandling(char *message)
{
fputs(message, stderr);
fputc('\n', stderr);
}


댓글을 달아 주세요
aa