본문 바로가기
728x90
반응형
SMALL

개념/혼자 공부하는 C언어148

chapter 19) #pragma 지시자 #include #pragma pack(push , 1) typedef struct{ char ch; int in; }Sample1; #pragma pack(pop) typedef struct{ char ch; int in; }Sample2; int main(void){ printf("Sample1 structure size : %d byte\n", sizeof(Sample1)); printf("Sample2 structure size : %d byte\n", sizeof(Sample2)); return 0; } ### 코드 설명 - `#pragma pack(push, 1)` 지시어는 구조체 멤버 사이의 패딩을 1바이트로 설정합니다. 즉, 추가적인 패딩 없이 멤버들이 메모리에 최대한 밀접하게 배치되도록 .. 2024. 10. 18.
chapter 19) #if, #ifdef, #else , #endif 를 사용한 조건부 컴파일 #include #define VER 7 #define BIT16 int main(void){ int max; #if VER >= 6 printf("version %d.\n", VER); #endif #if def BIT16 max = 32767; #else max = 2147483647; #endif printf("max of integer parameter : %d\n", max); return 0; } ### 코드 설명 1. **매크로 정의**: - `#define VER 7`: `VER`라는 매크로를 값 `7`로 정의합니다. - `#define BIT16`: 값을 지정하지 않고 `BIT16` 매크로를 정의합니다. `BIT16`이 정의되었는지 여부를 확인하기 위해 `#ifdef` 또는 `#if de.. 2024. 10. 17.
chapter 18) 표준 입출력 스트림을 사용한 문자열 입력 #include int main(void){ int ch; while (1){ ch = getchar(); if (ch ==EOF){ break; } putchar(ch); } return 0; } ### 코드 설명 - `int ch;`: 사용자로부터 입력받은 문자를 저장하기 위한 정수형 변수 `ch`를 선언합니다. 여기서 `char` 대신 `int`를 사용하는 이유는 `EOF`의 값을 저장할 수 있기 때문입니다. `EOF`는 일반적으로 `-1`로 정의되어 있으며, `char` 타입으로는 이 값을 정확히 표현할 수 없습니다. - `while (1){ ... }`: 무한 루프를 생성하여 프로그램이 `EOF`를 받기 전까지 계속 실행되도록 합니다. - `ch = getchar();`: `getchar()` .. 2024. 10. 16.
chapter 18) 파일의 형태와 개방 모드가 다른 경우 #include int main(void){ FILE *fp; int ary[10] = {5,2,3,4,1,6,7,8,9,10}; int i, res; fp = fopen("a.txt", "wb"); for (i = 0; i< 10; i++){ fputc(ary[i], fp); } fclose(fp); fp = fopen("a.txt", "rt"); while(1){ res = fgetc(fp); if (res == EOF) break; printf("%4d", res); } fclose(fp); return 0; } ### 파일 쓰기 - `FILE *fp;`는 파일을 가리키는 포인터 `fp`를 선언합니다. - `int ary[10] = {5,2,3,4,1,6,7,8,9,10};`는 파일에 쓸 데이터를 .. 2024. 10. 15.
728x90
반응형
LIST