프로그래밍 언어 공부/C

텍스트 파일 입출력(응용)

CalebHong 2022. 1. 18. 14:08

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