C Programming Language 44

C์–ธ์–ด ๋™์  ํ• ๋‹น๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

๋™์  ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐœ๋… ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๋ฐฉ๋ฒ•-์ •์ (static)-๋™์ (dynamic)  ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น - ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ- ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ฒฐ์ •ex) int score_s[100];- ์ฒ˜์Œ์— ๊ฒฐ์ •๋œ ํฌ๊ธฐ๋ณด๋‹ค ๋” ํฐ ์ž…๋ ฅ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•จ- ๋” ์ž‘์€ ์ž…๋ ฅ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ๋‚จ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ๋‚ญ๋น„๋จ  ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น - ์‹คํ–‰ ๋„์ค‘์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ- ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ์‹œ์Šคํ…œ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜๋‚ฉ(full)ex) score = (int *)               malloc(100*sizeof(int));- ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ํ• ๋‹น(malloc)์„ ๋ฐ›๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ   ์˜ˆ์ œ 1#includ..

C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (2)

C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (1) (tistory.com) C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (1)์ŠคํŠธ๋ฆผ(stream) ์ด๋ž€?์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋ฐ”์ดํŠธ(byte)๋“ค์˜ ํ๋ฆ„์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.์Šคcodebunny99.tistory.com   ํŒŒ์ผ ์ž…์ถœ๋ ฅ fopen: ํŒŒ์ผ ์—ด๊ธฐfscanf / fgets : ํŒŒ์ผ์ฝ๊ธฐ (ํ•œ ๋‹จ์–ด์”ฉ ์ฝ์„ ๋•Œ / ํ•œ ์ค„์”ฉ ์ฝ์„ ๋•Œ)fprintf : ํŒŒ์ผ ์“ฐ๊ธฐfclose : ํŒŒ์ผ ๋‹ซ๊ธฐ   1. ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ #include int main(){ FILE *fp = NULL; fp = fopen("data..

C์–ธ์–ด์˜ ์ž…์ถœ๋ ฅ๊ณผ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ(stream)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (1)

์ŠคํŠธ๋ฆผ(stream) ์ด๋ž€?์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋ฐ”์ดํŠธ(byte)๋“ค์˜ ํ๋ฆ„์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ, ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.์ŠคํŠธ๋ฆผ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฒ„ํผ(Buffer)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•ด ๋‘๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค.  ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ   ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜์˜ ๋ถ„๋ฅ˜ ์ผ๋ฐ˜ ์ŠคํŠธ๋ฆผ- ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜- ์ด ํ•จ์ˆ˜๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๋ฐ ์‚ฌ์šฉ fprintf- file print formatted์˜ ์•ฝ์ž- fprintf๋Š” ํฌ๋งท์„ ์ง€์ •ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜- ํ…์ŠคํŠธ ํŒŒ์ผ์— ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ๋•Œ ์‚ฌ์šฉFILE *fp = fopen("example.txt",..

C์–ธ์–ด ํฌ์ธํ„ฐ์˜ ํ™œ์šฉ : const, volatile, void ํฌ์ธํ„ฐ

2์ฐจ์› ๋ฐฐ์—ด๊ณผ ํฌ์ธํ„ฐ int m[3][3]; - ๋ฐฐ์—ด ์ด๋ฆ„ m์€ &m[0][0]- m[0]๋Š” 1ํ–‰์˜ ์‹œ์ž‘ ์ฃผ์†Œ- m[1]๋Š” 2ํ–‰์˜ ์‹œ์ž‘ ์ฃผ์†Œ... 2์ฐจ์› ๋ฐฐ์—ด์—์„œ m์— 1์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ๋Š” ๊ฒƒ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ ์‚ฌ์ง„๊ณผ ๊ฐ™๋‹ค.  #include int main(void){ int m[3][3] = { {10, 20, 30}, {40, 50, 60}, {70, 80, 90} }; printf("m = %p\n", (void *)m); printf("m[0] = %p\n", (void *)m[0]); printf("m[1] = %p\n", (void *)m[1]); printf("m[2] = %p\n", (void *)m[2]); printf("&m[0][0] = %p\n", (vo..

C์–ธ์–ด ํฌ์ธํ„ฐ์˜ ํ™œ์šฉ : ์ด์ค‘ ํฌ์ธํ„ฐ, ํฌ์ธํ„ฐ ๋ฐฐ์—ด, ํ•จ์ˆ˜ ํฌ์ธํ„ฐ

์ด์ค‘ ํฌ์ธํ„ฐ(double pointer) : ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ int i = 10; //i๋Š” intํ˜• ๋ณ€์ˆ˜int *p = &i; //p๋Š” i๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐint **q = &p; //q๋Š” ํฌ์ธํ„ฐ p๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ด์ค‘ ํฌ์ธํ„ฐ    ์ด์ค‘ ํฌ์ธํ„ฐ ์˜ˆ์ œ #include void set_pointer(char **q);int main(void){ char *p; set_pointer(&p); printf("์˜ค๋Š˜์˜ ๊ฒฉ์–ธ: %s \n", p); return 0;}void set_pointer(char **q){ *q = "All that glisters is not gold.";}     ํฌ์ธํ„ฐ ๋ฐฐ์—ด(array of pointers) : ํฌ์ธํ„ฐ๋ฅผ ๋ชจ์•„์„œ ๋ฐฐ์—ด๋กœ ๋งŒ..

C์–ธ์–ด ๊ตฌ์กฐ์ฒด union, enum, typedef ๋ž€?

๊ณต์šฉ์ฒด(union) : ์œ ๋‹ˆ์˜จ  - ์ž„๋ฒ ๋””๋“œ์‹œ์Šคํ…œ, ์ปค๋„ ๋“ฑ ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰ ์ œํ•œ์ด ์‹ฌํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.- ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ณ€์ˆ˜๊ฐ€ ๊ณต์œ - ๊ณต์šฉ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ตฌ์กฐ์ฒด์™€ ์•„์ฃผ ๋น„์Šท union example{ char c; //๊ฐ™์€ ๊ณต๊ฐ„ ๊ณต์œ  int i; //๊ฐ™์€ ๊ณต๊ฐ„ ๊ณต์œ };#include union example{ int i; char c;};int main(void){ union example v; v.c = 'A'; printf("v.c:%c v.i:%i\n", v.c, v.i); v.i = 10000; //v.i๋Š” v.c์™€ ๊ฐ™์€ ์˜์—ญ์„ ๊ณต์œ ํ•˜๋ฏ€๋กœ v.c๊ฐ€ 10000์œผ๋กœ ๋ฐ”๋€๋‹ค. printf("v.c:%..

C์–ธ์–ด ๊ตฌ์กฐ์ฒด์˜ ๋ณ€์ˆ˜, ๋ฐฐ์—ด , ํฌ์ธํ„ฐ, ํ•จ์ˆ˜

๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.๊ตฌ์กฐ์ฒด๋Š” ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ์ž๋ฃŒํ˜•์ด ํ•˜๋‚˜ ์ถ”๊ฐ€๋œ ๊ฒƒ์ด์ง€, ๋ณ€์ˆ˜๋Š” ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ์— ๊ณต๊ฐ„์ด ์ƒ๊ธด ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ์•ผ ํ•œ๋‹ค. struct student { int number; // ํ•™๋ฒˆ char name[10]; // ์ด๋ฆ„ double grade; // ํ•™์ };  ๊ตฌ์กฐ์ฒด๋ฅผ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”?int main(void){ struct student s1; //๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜ ์„ ์–ธ}    ๊ตฌ์กฐ์ฒด์™€ ๋ฐฐ์—ด์˜ ์ฐจ์ด์  ๊ตฌ์กฐ์ฒด : ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ชจ์•„์„œ ์˜๋ฏธ๋‹จ์œ„๋กœ ๋ฌถ์–ด์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ๋ฐฐ์—ด : ๋ฐฐ์—ด์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ ..

C์–ธ์–ด ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜

๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜       EOF(End Of File)  EOF(End Of File)๋Š” C ์–ธ์–ด์—์„œ ํŒŒ์ผ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋งคํฌ๋กœ ์ƒ์ˆ˜์ด๋‹ค.์ด ๋งคํฌ๋กœ๋Š” ํ—ค๋” ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ๋‹ค.EOF๋Š” ์ฃผ๋กœ ํŒŒ์ผ์˜ ๋์„ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ ํŒŒ์ผ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน๋ณ„ํ•œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.EOF๋Š” ์ •์ˆ˜ ์ƒ์ˆ˜์ด๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ -1๋กœ ์ •์˜๋œ๋‹ค.ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ fgetc() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด EOF๋ฅผ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€ ํŒŒ์ผ์—์„œ ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. #include int main() { FILE *fp; char c; fp = fopen("example.txt", "r"); if (fp == NULL) { perror("Error op..

C์–ธ์–ด ๋ฌธ์ž์™€ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ธฐ

๋ฌธ์ž์—ด(string) : ๋ฌธ์ž๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ ๋ชจ์ธ ๊ฒƒ   ๋ฌธ์ž์—ด ๋ณ€์ˆ˜๋ž€?-๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.   ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์˜ ํŠน์ง• (1) ํ•˜๋‚˜์˜ ๋ฌธ์ž๋Š” charํ˜• ๋ณ€์ˆ˜๋กœ ์ €์žฅ  ex) H (2) ๋ฌธ์ž์—ด์€ charํ˜• ๋ฐฐ์—ด๋กœ ์ €์žฅ          ex) HELLO\0 (3) NULL ๋ฌธ์ž๋Š” ๋ฌธ์ž์—ด์˜ ๋์„ ๋‚˜ํƒ€๋‚ธ๋‹ค   ex) \0 (4) ๋ฌธ์ž์—ด์€ ์–ด๋””์„œ ์ข…๋ฃŒ๋˜๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ‘œ์‹œ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.     ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.    ๋ฌธ์ž ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”   ๋ณดํ†ต, char str[4] = "abc"; ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ๋งŽ์ด ์“ด๋‹ค.    ๋ฌธ์ž์—ด์˜ ์ถœ๋ ฅchar str[] = "abc";printf("%s", str);//abc๋กœ ์ถœ๋ ฅ๋œ๋‹ค.    ์˜ˆ์ œ#include #inclu..

C์–ธ์–ด ํฌ์ธํ„ฐ(pointer)์˜ ๊ฐœ๋… ํ•™์Šตํ•˜๊ธฐ

๋ณ€์ˆ˜์™€ ๋ฉ”๋ชจ๋ฆฌ- ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค- ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์•ก์„ธ์Šค ๋œ๋‹ค- ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ์„œ ์ฐจ์ง€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋‹ฌ๋ผ์ง„๋‹ค ex) int 4๋ฐ”์ดํŠธ, char 1๋ฐ”์ดํŠธ ,,,    ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ- ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์—ฐ์‚ฐ์ž : &- ๋ณ€์ˆ˜ i์˜ ์ฃผ์†Œ : &i    ํฌ์ธํ„ฐ๋ž€?์ฃผ์†Œ๋ฅผ ๊ฐ–๊ณ ์žˆ๋Š” ๋ณ€์ˆ˜   ( = ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜)์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง„ ๋ณ€์ˆ˜ int * p ;  - ์ •์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ p      ํฌ์ธํ„ฐ์™€ ๋ณ€์ˆ˜์˜ ์—ฐ๊ฒฐint i = 10; // ์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜ i ์„ ์–ธint *p; // ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ p ์„ ์–ธp = &i; // ๋ณ€์ˆ˜ i์˜ ์ฃผ์†Œ๊ฐ€ ํฌ์ธํ„ฐ p๋กœ ๋Œ€์ž…      &์—ฐ์‚ฐ์ž์™€ *์—ฐ์‚ฐ์ž &์—ฐ์‚ฐ์ž : ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค*์—ฐ์‚ฐ์ž : ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์˜ ๋‚ด..