컴퓨터/C
본문에서는 다양한 형태로 저장되어있는 파일의 데이터를 읽어 프로그래머가 만든 프로그램 위로 올려 보는 파일의 출력 함수들에 대하여 알아보겠습니다.
fgetc함수를 통해 파일에서 문자 하나를 읽어 오는 함수입니다.
함수의 원형은 다음과 같습니다.
#include <stdio.h>
int fgetc(FILE *stream);
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//파일 스트림 생성
FILE* file = fopen("Test.txt", "rt");
char ch;
if (file != NULL)
{
//ch 변수를 통해 문자를 하나씩 읽어 옴
ch = fgetc(file);
printf("%c", ch);
}
retrun 0;
}
문자를 하나 읽어오는 것을 확인할 수 있습니다. 이를 추가적으로 응용해 while문을 사용한다면 아래와 같습니다.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//파일 스트림 생성
FILE* file = fopen("Test.txt", "rt");
char ch;
if (file != NULL)
{
while (1)
{
//ch 변수를 통해 문자를 하나씩 읽어 옴
ch = fgetc(file);
if (ch == EOF) // 만약 파일의 끝 이라면 읽어오기 종료
{
break;
}
printf("%c", ch);
}
}
return 0;
}
파일로부터 문자열을 읽어오는 함수입니다.
#include<stdio.h>
char *fgets(char* restrict s, int n, FILE* restrict stream)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//파일 스트림 생성
FILE* file = fopen("Test.txt", "rt");
char charr[100];
if (file != NULL)
{
fgets(charr, 3, file);
printf("%s", charr);
}
return 0;
}
C언어에서 문자열의 마지막은 '\0'(널문자)가 포함되므로 3개의 문자를 합친 문자열을 추출하면 위와 같은 결과가 나옵니다.
그렇다면 100개를 읽어오라고 한다면 어떤 결과가 나오는지 보도록 하겠습니다.
if (file != NULL)
{
fgets(charr, 100, file);
printf("%s", charr);
}
위의 결과로 봤을 때 파일을 읽어오면 줄 넘김 형식 지정자를 읽는 다면 최대 개수와 상관없이 함수를 종료하는 것을 알 수 있습니다.
서식 변환 문자를 이용하여 문자를 읽어오는 함수입니다.
#include <stdio.h>
int fscanf(FILE* restrict stream, const char* restrict format,...);
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
//파일 스트림 생성
FILE* file = fopen("Test.txt", "rt");
char charr[100];
if (file != NULL)
{
fscanf(file, "%s",charr);
printf("%s",charr);
fscanf(file, "%s",charr);
printf("%s",charr);
fscanf(file, "%s", charr);
printf("%s", charr);
}
return 0;
}
표준 입력인 scanf와 유사합니다. 이런 식으로 본문에서는 파일에서 데이터를 읽어오는 방법에 대하여 알아보았습니다.
C 언어 - 파일다루기 5 - 파일포인터(파일에서의 위치) (0) | 2021.07.27 |
---|---|
C 언어 - 가변인자 (가변매개변수) - variable argument (0) | 2021.07.26 |
C 언어 - 파일다루기 4 - 파일 입력 (파일에 데이터 넣기) (0) | 2021.07.22 |
C 언어 - 파일 다루기2 (fopen / fclose) (0) | 2021.07.20 |
C 언어 - 파일다루기 1 (파일의 이해) (0) | 2021.07.20 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet