구조체(struct)와 공용체(union)
구조체 - struct 두 개 이상의 원소들로 구성된 복합 자료형 서로 다른 데이터 형을 배열기법을 이용하여 하나로 묶은 것 사용자가 필요에 따라 임의로 만드는 데이터 형
구조체 - struct struct student { char name[20]; char addr[20]; char tel[20]; char gender; int age; } cs;
구조체 - struct struct student { char name[20]; char addr[20]; char tel[20]; char gender; int age; } cs1, cs2, cs3;
구조체 멤버의 접근 struct student { char name[20]; char addr[20]; char tel[20]; char gender; int age; } cs; cs.age = 20; strcpy(cs.name, ”홍길동”);
#include <stdio.h> #include <string.h> struct student{ char name[20]; char addr[20]; char tel[20]; char gender; int age; }; void main() { struct student cs; strcpy(cs.name, “정보통신인”); strcpy(cs.addr, “성대 1공학관”); strcpy(cs.tel, “031-290-7162”); cs.gender = ‘M’; cs.age = 20;
printf(“이름 : %s \n”, cs.name); printf(“주소 : %s \n”, cs.addr); printf(“전화 : %s \n”, cs.tel); printf(“성별 : %c \n”, cs.gender); printf(“나이 : %d \n”, cs.age); }
공용체 - union union struct student { char name[20]; char addr[20]; char tel[20]; char gender; int age; } cs; 모든 멤버 변수가 메모리를 공유함!!! 멤버 중 크기가 가장 큰 요소의 크기만큼 메모리를 할당 받음!!!
파일 입/출력 텍스트 파일 입출력 – 파일 열기 FILE *fopen( char *filename, char *mode ); FILE *fp; fp = fopen(filename, “r”); if ( fp == NULL ) { printf(“오류 : %s 파일을 열 수 없다 \n”, filename); return; }
여는 연산을 보여주는 프로그램 #include <stdio.h> void main() { FILE *fp; fp = fopen(“hello.txt”, ”r”); if( fp == NULL) { printf(“오류 : 파일 열기 실패 \n”); return; }
텍스트 파일 입출력 – 파일 닫기 FILE *fclose( FILE *fp);
#include <stdio. h> void main() { FILE. fp; fp = fopen(“hello #include <stdio.h> void main() { FILE *fp; fp = fopen(“hello.txt”, ”w”); if( fp == NULL) { printf(“오류 : 파일 열기 실패 \n”); return; } else printf(“파일 열기 성공 \n”); fclose(fp);
fgetc() , fputc() 파일이 정상적으로 열려야만 파일에 데이터를 쓸 수 있다. 텍스트 파일에 한 번에 한 문자씩 읽거나 쓰는 fgetc(), fputc() 함수를 살펴보자. int fgetc( FILE *fp ); int fputc( int ch, FILE *fp);
#include <stdio.h> char str[] = “I love your smile”; void main() { FILE *fp; char ch; int i; if ( (fp = fopen(“hello.txt”, “w”) == NULL) { printf(“오류 : 파일 열기 실패 \n”); return ; } for( i=0 ; str[i]; i++ ) { if ( fputc(str[i], fp) == EOF ) { printf(“오류 : 파일을 쓸 수 없다 \n”); return; fclose(fp); /* 파일 포인터 선언 */ /* str 을 파일에 쓴다 */
if( ( fp = fopen(“hello.txt”, “r” ) == NULL ) { printf(“오류 : 파일을 열 수 없다 \n”); return ; } for ( ; ; ) { ch = fgetc(fp); if ( ch == EOF ) break; putchar(ch); fclose(fp); /* 파일을 다시 연다 */ /* 파일에서 읽어 온 것을 출력한다 */