fscanf
#include <stdio.h>
int main(void)
{
FILE* fp;
char buf[1024];
int num;
float real;
if (fp = fopen("data.txt", "r"))
{
while(0 < fscanf(fp, %d %f %s", &num, &real, buf))
{
printf("%d %f %s\n", num, real, buf);
}
fclose(fp);
}
return 0;
}
// data.txt 내용
123 456.789 hello
1 123.456 good
100 456.456 morning
rewind
fprintf
#include <stdio.h>
int main()
{
FILE* pFile; // 스트림 생성
int n;
char name[100];
pFile = fopen("myfile.txt", "w"); // write mode로 파일 오픈
for (n=0; n<3; n++)
{
puts("please, enter a name: ");
gets(name);
fpintf(pFile, "Name %d[%-10.10s]\n", n+1, name); // 음수를 넣어 왼쪽으로 정렬
}
fclose(pFile);
return 0;
}
이진 파일 입출력
fread
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* pFile;
char buffer[500];
size_t result;
pFile = fopen("myfile.bin", "rb");
if (pFile == NULL) // 오픈 체크
{
fputs("File error", stderr); // 파일 오픈 에러 출력
exit(1);
}
fread(buffer, 1, lSize, pFile); // lSize는 파일의 크기, 여기서는 500이라고 입력해주면 됨
........
fclose(pFile);
return 0;
}
fwrite
#include <stdio.h>
enum { SIZE = 5 };
int main(void)
{
double a[SIZE] = { 1., 2., 3., 4., 5.};
FILE* fp = fopen("test.bin", "wb"); // b를 넣음으로 바이너리 모드로 오픈
fwrite(a, 8, SIZE, fp); // double형 정렬로 입력
fclose(fp);
...
}
// 파일을 다른 파일로 복사
int main(void)
{
FILE* fp_Sour; // 파일 원본을 위한 파일 스트림 포인터
FILE* fp_Dest; // 복사 대상을 위한 파일 스트림 포인터
char buff[1024]; // 파일 내용을 읽기/쓰기를 위한 버퍼
size_t n_size; // 읽거나 쓰기를 위한 데이터의 갯수
fp_Sour = fopen("./main.c", "r");
fp_Dest = fopen("./main.bck", "w");
while(0 < (n_size = fread(buff, 1, 1024, fp_Sour)))
{
fwrite(buff, 1, n_size, fp_Dest);
}
fclose(fp_Sour):
fclose(fp_Dest):
return 0;
}
fseek
#include <stdio.h>
int main()
{
FILE* pFile;
pFile = fopen("example.txt", "wb");
fputs("This is an apple.", pFile);
fseek(pFile, 9, SEEK_SET);
fputs(" sam", pFile);
fclose(pFile);
return 0;
}
ftell
'프로그래밍 언어 공부 > C' 카테고리의 다른 글
변환 랜덤 라이브러리 (0) | 2022.01.21 |
---|---|
시간 관련 라이브러리 (0) | 2022.01.20 |
파일 입출력 라이브러리(Basic Step) (0) | 2022.01.17 |
도서관리 시스템 고도화(동적메모리) (0) | 2022.01.17 |
함수 포인터(Function Pointer) (0) | 2022.01.15 |