Programming45 15 File input & output ํ์ผ ์ ์ถ๋ ฅ์ ํ๋ก๊ทธ๋จ์ด ํ์ผ์ ์ฝ์ด๋ค์ด๊ฑฐ๋ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ์์ ์ ๋งํฉ๋๋ค. C ์ธ์ด์์ ํ์ผ ์ ์ถ๋ ฅ์ stdio.h ํค๋ ํ์ผ์ ์ ์๋ ํจ์๋ค์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. Linux base "r": ์ฝ๊ธฐ ๋ชจ๋ (ํ์ผ์ด ์กด์ฌํด์ผ ํจ) "w": ์ฐ๊ธฐ ๋ชจ๋ (ํ์ผ์ด ์์ผ๋ฉด ์๋ก ์์ฑํ๋ฉฐ, ํ์ผ์ด ์ด๋ฏธ ์์ผ๋ฉด ๊ธฐ์กด ๋ด์ฉ์ ์ง์) "a": ์ถ๊ฐ ๋ชจ๋ (ํ์ผ์ด ์์ผ๋ฉด ์๋ก ์์ฑํ๋ฉฐ, ํ์ผ์ด ์ด๋ฏธ ์์ผ๋ฉด ๊ธฐ์กด ๋ด์ฉ ๋์ ์ถ๊ฐ) "rb", "wb", "ab": ์ด์ง ํ์ผ์ ์ฝ๊ธฐ/์ฐ๊ธฐ/์ถ๊ฐ ๋ชจ๋๋ก ์ด๊ธฐ 1) ํ์ผ ์ฐ๊ธฐ(File Wirte): fopen ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ์ด ๊ณ , ์๋ก์ด ํ์ผ์ ์ธ ์(์์ฑ) ์์ต๋๋ค. ๋๋ณด๊ธฐ #include int main() { FILE * file = fopen("/mnt/.. 2024. 1. 25. 14 Structure (๊ตฌ์กฐ์ฒด) ๊ตฌ์กฐ์ฒด(Structure)๋ C ์ธ์ด์์ ์ฌ๋ฌ ๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์ ์ ๋ฌถ์ด์ ํ๋์ ์๋ก์ด ๋ฐ์ดํฐ ํ์ ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋๋ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก ๋ค๋ฅธ ํ์ ์ ๋ณ์๋ค์ ํ๋๋ก ๋ฌถ์ด์ ์๋ก์ด ์๋ฃํ์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํํํ๊ณ ๋ค๋ฃจ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋๋ณด๊ธฐ #include #include // ํ์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ๊ตฌ์กฐ์ฒด ์ ์ struct Student { char name[50]; int age; float gpa; }; int main() { // ๊ตฌ์กฐ์ฒด ๋ณ์ ์ ์ธ๊ณผ ์ด๊ธฐํ struct Student student1; strcpy(student1.name, "John Doe"); student1.age = 20; student1.gpa = 3.5;.. 2024. 1. 25. 13 Array C ์ธ์ด์์ ๋ฐฐ์ด์ ๋์ผํ ๋ฐ์ดํฐ ํ์์ ์ฌ๋ฌ ์์๋ฅผ ํ๋์ ๋ณ์์ ์ฐ์์ ์ผ๋ก ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๋๋ค. ๊ฐ ์์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ฐฐ์ด์ ์ ์ธํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ๋ฐฐ์ด์ ํน์ง ํญ์ ๊ฐ์ด (์ด๊ธฐํ) ์์ด์ผ ํฉ๋๋ค. [ ] ์นธ ์์๋ ์์๋ง ์ฌ ์ ์์ต๋๋ค. arr[10] = { 1, 2 } -> ๋ฐฐ์ด์ด 10์นธ ์ด๊ธฐ ๋๋ฌธ์ 8์นธ์ 0์ผ๋ก ๋์ต๋๋ค. arr[] = { 1, 2 ) -> ๊ฐ์ด 2๊ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ 2์นธ์ด ์๋์ผ๋ก ํ ๋น๋ฉ๋๋ค. ๋ฐฐ์ด๊ณผ ๋ฐ๋ณต๋ฌธ ๋ฐ๋ณต๋ฌธ๊ณผ ํจ๊ป ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด ๊ฐํธํ๊ฒ ๋ชจ๋ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ค์ฐจ์ ๋ฐฐ์ด C ์ธ์ด์์๋ ๋ค์ฐจ์ ๋ฐฐ์ด๋ ์ง์๋ฉ๋๋ค. 2์ฐจ์ ๋ฐฐ์ด์ ํ(row)๊ณผ ์ด(column)๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ค์ฐจ์ ๋ฐฐ์ด์ ์ฌ๋ฌ .. 2024. 1. 24. 12 Pointer ํฌ์ธํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ก, ํด๋น ์ฃผ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉ๋๋ C ์ธ์ด์์ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค. ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ง์ ์กฐ์ํ์ฌ ๋ค์ํ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ํฌ์ธํฐ์ ์ฃผ์ ๊ฐ๋ ๊ณผ ํ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. Pointer level 1 ๋๋ณด๊ธฐ #include int main() { int a; int *b; a = 3; printf("a = %d\n", a); // 3 printf("&a = %u\n", &a); // a address b = &a; printf("b = %u\n", b); // a address *b = 5; printf("*b = %d\n", *b); // 5 printf("a = %d\n", a); // .. 2024. 1. 24. 11 function (ํจ์) C ์ธ์ด์์ ํจ์๋ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ธ๋ก ์ค ํ๋๋ก, ํน์ ์์ ์ ์ํํ๋ ์ฝ๋ ๋ฌถ์์ ๋๋ค. ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๋ชจ๋ํ์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ฉฐ, ํ๋ก๊ทธ๋จ์ ๋ ผ๋ฆฌ์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋จ์๋ก ๋๋ ์ ์์ต๋๋ค. ํจ์๋ ํน์ ํ ๊ธฐ๋ฅ์ ์ํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. return_type: ํจ์๊ฐ ๋ฐํํ๋ ๊ฐ์ ์๋ฃํ์ ๋ํ๋ ๋๋ค. ๋ง์ฝ ํจ์๊ฐ ์๋ฌด๋ฐ ๊ฐ์ ๋ฐํํ์ง ์์ ๊ฒฝ์ฐ void๋ฅผ ์ฌ์ฉํฉ๋๋ค. function_name: ํจ์์ ์ด๋ฆ์ ๋ํ๋ ๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋ ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํธ์ถํฉ๋๋ค. parameters: ํจ์์ ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์๋ค์ ๋ชฉ๋ก์ ๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋ ์ด ๋งค๊ฐ๋ณ์๋ค์ ์ ๋ฌํ์ฌ ํจ์๊ฐ ์์ ์ ์ํํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํจ์ ๋ด์ฉ: ์ค๊ดํธ {}๋ก ๋๋ฌ์ธ์ธ ๋ถ๋ถ์.. 2024. 1. 23. 10 string (feat. random ํจ์) C ์ธ์ด์์ ๋ฌธ์์ด์ ๋ฌธ์๋ค์ ๋ฐฐ์ด๋ก ํํ๋ฉ๋๋ค. ๋ฌธ์์ด์ ์ข ์ข null ๋ฌธ์('\0')๋ก ๋๋๋ฉฐ, ์ด null ๋ฌธ์๋ ๋ฌธ์์ด์ ๋์ ๋ํ๋ ๋๋ค. C ์ธ์ด์์๋ ๋ฌธ์์ด์ char ๋ฐฐ์ด๋ก ์ ์ํ๊ณ , ์ด ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๋ค๋ฃน๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋๋ณด๊ธฐ #include void main() { char str[20]; // ๋ฌธ์์ด์ ์ฐ์๋ ์งํฉ! str[0] = 'h'; str[1] = 'e'; str[2] = 'l'; str[3] = 'l'; str[4] = 'o'; str[5] = '\0'; char str1 = 'h'; char str2 = 'e'; char str3 = 'l'; char str4 = 'l'; char str5 = 'o'; char str6 = '\0'; p.. 2024. 1. 23. 9 while & do-while (feat. break & continue) while ๋ฃจํ์ do-while ๋ฃจํ๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ํํ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ค. ์ด ๋ ๋ฃจํ ๋ชจ๋ ์กฐ๊ฑด์ด ์ฐธ์ธ ๋์ ์ฝ๋๋ฅผ ๋ฐ๋ณต ์คํํ๋ฉฐ, ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด ๋๋ฉด ๋ฐ๋ณต์ด ์ข ๋ฃ๋ฉ๋๋ค. while ๋ฃจํ while ๋ฃจํ๋ ๋ฐ๋ณต ์์ ์ ์ ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ณ , ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์ฐ์๋ง ๋ฃจํ ๋ด์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1๋ถํฐ 5๊น์ง์ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ ๊ฐ๋จํ while ๋ฃจํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: do-while loop do-while ๋ฃจํ๋ ๋จผ์ ์ฝ๋๋ฅผ ํ ๋ฒ ์คํํ ํ์ ์กฐ๊ฑด์ ๊ฒ์ฌํฉ๋๋ค. ๋ฐ๋ผ์ do-while ๋ฃจํ๋ ์ต์ํ ํ ๋ฒ์ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 1๋ถํฐ 5๊น์ง์ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ do-while ๋ฃจํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: do-while ๋ฃจํ๋ ๋ฃจํ ๋ด๋ถ์ ์ฝ๋๊ฐ ์ต์ํ ํ.. 2024. 1. 23. 8 for loop (feat. Nested loop) C ์ธ์ด์์ for ๋ฃจํ๋ ๋ฐ๋ณต๋ฌธ์ ๊ตฌํํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. for ๋ฃจํ๋ ์ด๊ธฐํ ๊ตฌ๋ฌธ, ์กฐ๊ฑด์, ์ฆ๊ฐ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ for ๋ฃจํ์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด๊ธฐํ ๊ตฌ๋ฌธ (Initialization): ๋ฃจํ๊ฐ ์์๋ ๋ ํ ๋ฒ๋ง ์คํ๋๋ ๋ถ๋ถ์ผ๋ก, ๋ณ์์ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์กฐ๊ฑด์ (Condition): ๋งค ๋ฐ๋ณต๋ง๋ค ํ๊ฐ๋์ด ์ฐธ(true) ๋๋ ๊ฑฐ์ง(false)์ผ๋ก ํ๋จ๋๋ ๋ถ๋ถ์ ๋๋ค. ์กฐ๊ฑด์์ด ์ฐธ์ธ ๋์ ๋ฃจํ๊ฐ ๊ณ์ ์คํ๋ฉ๋๋ค. ์ฆ๊ฐ์ (Increment/Decrement): ๊ฐ ๋ฐ๋ณต์ด ๋๋ ๋๋ง๋ค ์คํ๋๋ ๋ถ๋ถ์ผ๋ก, ์ผ๋ฐ์ ์ผ๋ก ๋ณ์๋ฅผ ์ฆ๊ฐ์ํค๊ฑฐ๋ ๊ฐ์์ํค๋ ์ญํ ์ ํฉ๋๋ค. Nested loop ์ด์ค ๋ฐ๋ณต๋ฌธ์ ํ๋์ ๋ฐ๋ณต๋ฌธ ์์ ๋ค๋ฅธ ๋ฐ๋ณต๋ฌธ์ด ์ค์ฒฉ๋์ด ์๋ ๊ตฌ์กฐ๋ฅผ ๋งํฉ๋.. 2024. 1. 23. 7 if & switch if statement if ๋ฌธ์ ์กฐ๊ฑด์ ํ๊ฐํ์ฌ ํด๋น ์กฐ๊ฑด์ด ์ฐธ(true)์ธ ๊ฒฝ์ฐ์ ์ฝ๋ ๋ธ๋ก์ ์คํํ๋ ์กฐ๊ฑด๋ฌธ์ ๋๋ค. C ์ธ์ด์์ if ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ํํ๋ฅผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ "์กฐ๊ฑด"์ ๋ถ๋ฆฌ์ธ ๊ฐ ๋๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ฐํํ๋ ํํ์์ ๋๋ค. ๋ง์ฝ ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด, ์ค๊ดํธ {} ์์ ์๋ ์ฝ๋ ๋ธ๋ก์ด ์คํ๋๊ณ , ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ฉด ๋ธ๋ก์ ๋ฌด์๋ฉ๋๋ค. if ๋ฌธ์ ๋จ๋ ์ผ๋ก ์ฌ์ฉ๋ ์๋ ์๊ณ , else๋ else if ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์๋ ์์ต๋๋ค. ์์ ์ฝ๋์์ else if๋ ์ถ๊ฐ์ ์ธ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ฉฐ, else๋ ์ด๋ค ์กฐ๊ฑด๋ ๋ง์กฑํ์ง ์์ ๋ ์คํ๋ฉ๋๋ค. ์ฌ๋ฌ ๊ฐ์ else if ๋ธ๋ก์ ์ถ๊ฐํ์ฌ ๋ค์ํ ์กฐ๊ฑด์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. Switch statement switch ๋ฌธ์ ํน์ ๋ณ์์ ๊ฐ์ ๋ฐ.. 2024. 1. 23. ์ด์ 1 2 3 4 5 ๋ค์