블가다의 C언어 강좌) 파일 입출력 & 동적할당

2017. 6. 2. 12:54프로그래밍(이전)/C

파일 입출력 이론

 

 

FILE *f = fopen("경로밑 파일이름","r"읽기 "w"덮어쓰기 "a"이어쓰기);

int a;

fscanf(f, "%d",&a); 파일 내용 불러오기

printf("%d",a);파일 내용 뽑기

fprintf(f, "131313"); 파일에 박기

fclose(f);선언한 파일의 메모리 할당이 풀림


 

동적할당 이론



#include <stdlib.h>

int *a = (int*)malloc(sizeof(int)*5//여기 안에 메모리양 설정);

printf("%d",sizeof(int));자료형의 메모리 바이트

free(a);a라는 변수에 선언한 메모리가 다 날라감

 

 




 

파일 입출력 실습

 

 

#include <stdio.h>

int main()

{

   FILE *f1 = fopen("test1.txt","r");//읽기모드로 파일 열기

char a[500];//파일의 내용을 받아올 문자열 선언

fscanf(f1,"%s",a);//파일의 내용을 a라는 문자열에 스캔해 넣음

printf("%s\n",a);//내용 출력

fclose(f1);//메모리 할당 풀기

 

FILE *f2 = fopen("test1.txt","w");//다시쓰기 모드로 파일 열기

fprintf(f2,"유키호는 여신 인겁니다!");//파일을 문자열 내용으로 다시쓰기

fclose(f2);//메모리 할당 풀기

 

FILE *f3 = fopen("test1.txt","a");//이어쓰기 모드로 파일 열기

fprintf(f3,"또 란코 인겁니다!");//파일을 문자열 내용으로 이어쓰기

fclose(f3);//메모리 할당 풀기

}

 

<<경로

 

<<실행 전<<실행후  text1.txt

“유키호입니다만?” -> 다시쓰기로 삭제 ->”유키호는 여신 인겁니다!\n” 기록

-> “란코도 인겁니다!” 이어쓰기로 뒤에 기록

<<실행된 콘솔

동적할당 실습

 

#include <stdio.h>

#include <stdlib.h> //헤더파일 불러오기

 

typedef struct

{

char *a;

int *n;

} Person; //구조체 선언

int main(void)

{

Person p; //p라는 구조체 하나 생성

p.a = (char*)malloc(sizeof(char)*5);//동적할당으로 메모리 지정

p.n = (int*)malloc(sizeof(int)*2);//동적할당으로 메모리 지정

printf("이름 입력 : ");

scanf("%s",p.a);//이름 입력

for(int a = 0;a<2;a++)

{

if(a == 0)

{

printf("나이 입력 : ");

}else if(a == 1)

{

printf("키 입력 : ");

}

scanf("%d",&p.n[a]);//정수 2개 입력

}

printf("이름 출력 : %s\n",p.a);//이름 출력

for(int a = 0;a<2;a++)

{

if(a == 0)

{

printf("나이 출력 : ");

}else if(a == 1)

{

printf("키 출력 : ");

}

printf("%3d\n",p.n[a]); //정수2개 출력

}

   return 0;

}


<<실행 결과