몽상실현개발주의

[따배씨] 13.2 텍스트 파일 입출력 예제 본문

Language/C

[따배씨] 13.2 텍스트 파일 입출력 예제

migrationArc 2021. 6. 16. 22:46

[따배씨] 13.2 텍스트 파일 입출력 예제

따배씨 - 따라하며 배우는 C언어

13강 파일 입출력

13.2 텍스트 파일 입출력 예제

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
    int ch;
    FILE* fr;
    
    /*
        typedef struct _iobuf
        {
            char* _ptr;
            int _cnt;
            char* _base;
            int _flag;
            int _file;
            int _charbuf;
            int _bufsiz;
            char* _tmpfname;
        } FILE;
     
     // File 을 처리할 때 필요한 여러가지 데이터들의 묶음을 FILE 이라는 자료형이 있는것 처럼 사용하게 해줌
     */
    
    unsigned long count = 0;
    
    if (argc != 2){
        printf("Usage : %s filename\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    
    if ((fr = fopen(argv[1], "r")) == NULL) // Open a text file for reading.
    {
        printf("Can't open %s\n", argv[1]);
        exit(EXIT_FAILURE);
    }
    
    /*
        fopen mode strings for text files
        - r: reading
        - w: creating-and-writing or over-writing
        - a: appending or creating-and-writing
        - r+: both reading and writing
        - w+: reading and writing, over-writing or creating
        - a+: reading and writing, appending or creating
     */
    
    
    while ((ch = fgetc(fr)) != EOF) // getc(fr)
    {
        //putc(ch, stdout); //same as putchar(ch);
        fputc(ch, stdout);
        
        count++;
    }
    
    fclose(fr);
    
    printf("FILE %s has %lu characters\n", argv[1], count);
    
    return 0;
}
FILE* fr;
  • 파일을 처리할 때 필요한 데이터 묶음에 대한 포인터
if ((fr = fopen(argv[1], "r")) == NULL)
{
  	printf("Can't open %s\n", argv[1]);
		exit(EXIT_FAILURE);
}
  • fopen() 은 file을 처리하는데 필요한 데이터 묶음에 대한 pointer 를 return

 

 

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
    int ch;
    FILE* fr, *fw;
    
    const char* out_filename = "output.txt";
    
    unsigned long count = 0;
    
    if (argc != 2){
        printf("Usage : %s filename\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    
    if ((fr = fopen(argv[1], "r")) == NULL)
    {
        printf("Can't open %s\n", argv[1]);
        exit(EXIT_FAILURE);
    }
    
    if ((fw = fopen(out_filename, "w")) == NULL) 
    {
        printf("Can't open %s\n", out_filename);
        exit(EXIT_FAILURE);
    }
    
    while ((ch = fgetc(fr)) != EOF) // getc(fr)
    {
        fputc(ch, stdout);
        fputc(ch, fw);
        
        count++;
    }
    
    fclose(fr);
    fclose(fw);
    
    printf("FILE %s has %lu characters\n", argv[1], count);
  	printf("Copied to %s\n", out_filename);
    
    return 0;
}
  • 입력받은 txt 파일의 내용을 새로운 txt 파일로 출력

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments