๋ชฉ๋ก๐Ÿ‘ฉ‍๐Ÿ’ป IoT (Embedded)/C์–ธ์–ด (8)

๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

C์–ธ์–ด๋กœ ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ ๋งŒ๋“ค๊ธฐ

โ˜Ž๏ธ ContactBook โ˜Ž๏ธ ์ „ํ™”๋ฒˆํ˜ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ์š”๋ฅผ ๋งŒ๋“ค๊ณ  ํ™”๋ฉด๊ณผ ๋ฉ”๋‰ด์˜ ๊ตฌ์„ฑํ•˜๋ฉฐ ๊ธฐ๋Šฅ์˜ ํ™•์žฅํ•ด๋ณด์ž!!! ๐Ÿ›Ž๏ธ 2์กฐ์˜ ๊ทœ์น™ 1๏ธโƒฃ commit message โž•[Feat] : ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๐Ÿš€[Chore] : ์‹คํ–‰ ํŒŒ์ผ ๋ฐ ์ˆ˜์ • ์‹œ ๐Ÿšง[Refactor] : ์ฝ”๋“œ ์ˆ˜์ • (๋ฆฌํŒฉํ† ๋ง) ๐Ÿ“ƒ[Memo] : ์ฃผ์„ ์ˆ˜์ • ๐Ÿšจ[Alert] : ๊ธฐ๋Šฅ ์˜ค๋ฅ˜ ์‹œโ€‹ 2๏ธโƒฃ ๊นƒํ—ˆ๋ธŒ push ์‹œ ๐Ÿšจ ์•Œ๋ฆฌ๊ธฐ (์ถฉ๋Œ ๋ฐœ์ƒ!! Pull ํ•˜๊ณ  ์ˆ˜์ •ํ•˜์„ธ์š”!!) 3๏ธโƒฃ 1์ผ 1 issue ์ž‘์„ฑ 4๏ธโƒฃ dev branch ์— 1์ฐจ Merge, main branch ์— ์ตœ์ข… Merge โ˜Ž๏ธ ํ”„๋กœ์ ํŠธ โ˜Ž๏ธ ๐Ÿ‘จ‍๐Ÿ’ป 1. ํ”„๋กœ์ ํŠธ ๊ฐ„ํŠธ ์ฐจํŠธ ContactBook ๊ฐœ์š”์งœ๊ธฐ (September 7, 2023) ContactBook ๊ฐœ์š” ๊ตฌ์ฒดํ™”ํ•˜๊ธฐ ..

[C programming] ํ˜•์‹ ๋ฌธ์ž์—ด์„ ์ด์šฉํ•œ ์ž…์ถœ๋ ฅ (printf, scanf)

๐ŸŒ printf() ํ•จ์ˆ˜ : ํ˜•์‹ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ โœ… ํ˜•์‹ ๋ฌธ์ž : ๋ฐ์ดํ„ฐ๋ฅผ ์ž…/์ถœ๋ ฅ ํ•  ๋•Œ, ์ปดํ“จํ„ฐ๊ฐ€ ๊ทธ ํ˜•์‹์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก, ๋ฐ์ดํ„ฐ์˜ ํ•ด์„์„ ์ง€์‹œํ•ด์ฃผ๋Š” ๋ฌธ์ž โœ… ๊ฐ€๋ณ€ ์ธ์ž : ํ˜•์‹ ๋ฌธ์ž๊ฐ€ ๋ช‡ ๊ฐœ๋‚˜ ๋“ค์–ด์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ธ์ž ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค โ›… ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ณ€ํ™” ๋ฐฐ์—ด๋กœ ๋ฌธ์ž์—ด ์ €์žฅ : ์ž๋ฃŒํ˜•์„ char๋กœ ์„ ์–ธํ•˜๊ณ  Hello๋ผ๋Š” 5๊ธ€์ž๋ฅผ ๋ฐฐ์—ด์— ๋„ฃ์Œ : ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ 6์ธ ์ด์œ ๋Š” ๋ฌธ์ž์—ด์€ ํ•ญ์ƒ NULL๋ฌธ์ž๋ฅผ ๋งˆ์ง€๋ง‰์— ํฌํ•จ ํ•˜๊ธฐ ๋•Œ๋ฌธ : ๋ฐฐ์—ด๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๊ตฌ์ฒด์ ์œผ๋กœ ex) 1023๋ฒˆ์ง€์— ์ €์žฅ์ด ๋œ๋‹ค ํฌ์ธํ„ฐ๋กœ ๋ฌธ์ž์—ด ์ €์žฅ : ์ž๋ฃŒํ˜•์€ ๋™์ผํ•˜๊ฒŒ char ์ด์ง€๋งŒ ํฌ๊ธฐ(size)๊ฐ€ ์—†๊ณ  ๊ทธ๋ƒฅ ํฌ์ธํ„ฐ์— ๋ฌธ์ž์—ด์„ ์ €์žฅ : Hello ๋ฌธ์ž์—ด์˜ ์ฒซ ์ฃผ์†Œ๋งŒ ๊ธฐ์–ตํ•˜๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ํ•ด๊ฒฐ ํ•˜๊ฒ ๋‹ค..

[C programming] ๋ฌธ์ž & ๋ฌธ์ž์—ด ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

๐ŸŒ ๋ฌธ์ž ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜ โ›… getchar() ํ•จ์ˆ˜ : ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅํ•œ ๋ฌธ์ž ํ˜น์€ ๋ฌธ์ž์—ด์—์„œ ํ•œ ๊ธ€์ž๋ฅผ ์ฝ์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ : ํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ž๋ฅผ ์ฝ์–ด ์˜ค๋Š” ๊ณณ์€ ์–ด๋–ค ๋ฉ”๋ชจ๋ฆฌ์ธ๋ฐ ๋ณดํ†ต ๊ทธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฒ„ํผ(Buffer) โ›… putchar( ) ํ•จ์ˆ˜ : ๋ฌธ์ž๋ฅผ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ // : ํ•ต์‹ฌ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ํ•จ์ˆ˜๋“ค์„ ์ •์˜ #include void main() { // getchar( ) ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋• // ํ‚ค๋ณด๋“œ์— ๋Œ€ํ•œ ์ž…์ถœ๋ ฅ ๋ฒ„ํผ๊ฐ€ ๋น„์–ด ์žˆ๋Š” ์ƒํƒœ char ch; ch = getchar(); // putchar( ) ๋ฌธ์ž๋ฅผ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜ putchar(ch); ch = getchar(); putchar(ch); ch = getchar(); putchar(ch); } // TES..

[C programming] ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ด๋ก 

๐ŸŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ด๋ก  โ›… ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ ๋ ˆ์ง€์Šคํ„ฐ : CPU ๋‚ด๋ถ€์˜ ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ๋กœ, ํœ˜๋ฐœ์„ฑ์ด๋ฉฐ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅด๊ณ , ๊ธฐ์–ต ์šฉ๋Ÿ‰์ด ๊ฐ€์žฅ ์ ๋‹ค ์บ์‹œ : L1, L2, L3 ์บ์‹œ๋ฅผ ์ง€์นญํ•˜๊ณ  ํœ˜๋ฐœ์„ฑ์ด๋ฉฐ, ์†๋„๊ฐ€ ๋น ๋ฅด๋‚˜ ๊ธฐ์–ต ์šฉ๋Ÿ‰์ด ์ ๋‹ค ์ฃผ๊ธฐ์–ต์žฅ์น˜(๋ฉ”๋ชจ๋ฆฌ) : RAM์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ํœ˜๋ฐœ์„ฑ์ด๋ฉฐ, ์†๋„์™€ ๊ธฐ์–ต ์šฉ๋Ÿ‰์€ ๋ณดํ†ต์ด๋‹ค ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜(๋””์Šคํฌ) : HDD, SDD๋ฅผ ์ผ์ปฌ์œผ๋ฉฐ ๋น„ํœ˜๋ฐœ์„ฑ์ด๋‹ค. ์†๋„๋Š” ๋‚ฎ์œผ๋ฉฐ ๊ธฐ์–ต ์šฉ๋Ÿ‰์ด ๋งŽ๋‹ค โ›… ๋ฉ”๋ชจ๋ฆฌ - ์ฝ”๋“œ(code) ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฝ”๋“œ(code) ์˜์—ญ์€ ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ CPU๋Š” ์ฝ”๋“œ ์˜์—ญ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ๊ฐ€์„œ ์ฒ˜๋ฆฌ - ๋ฐ์ดํ„ฐ(data) ์˜์—ญ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ(data) ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์ (static) ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ ํ”„..

[C programming] ํฌ์ธํ„ฐ & ๋ณ€์ˆ˜ & ์ฃผ์„

๐ŸŒ ํฌ์ธํ„ฐ : & ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜๋ช… ์•ž์— ๋ถ™์„ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ : * ๊ธฐํ˜ธ๋Š” ํฌ์ธํ„ฐ ์—ฐ์‚ฐ์ž : ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ฃผ์†Œ ์ €์žฅ์šฉ ๋ณ€์ˆ˜ : ๋ชจ๋“  ๋ณ€์ˆ˜๋Š” ๋ณ€์ˆ˜๋ช… ์ด์™ธ์— ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ ๐ŸŒ ๋ณ€์ˆ˜ : ๋ฉ”๋ชจ๋ฆฌ์— ๋ถ™์—ฌ์ง„ ์ด๋ฆ„ : ์ž๋ฃŒํ˜•์€ ์ผ์ • ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ• : ๋ณ€์ˆ˜๋Š” ํ•ด์„ํ•  ๋Œ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ๋ถ™์ธ ์ด๋ฆ„ : ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๊ฒฝ์šฐ ๋ชจ๋‘ ์Šคํƒ(Stack) ์˜์—ญ์— ํ• ๋‹น โ›… ๋ณ€์ˆ˜์˜ ์„ ์–ธ : ๋ณ€์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ์„ ์–ธ ์งํ›„์— ์„ ์–ธํ•ด์•ผ ํ•˜๋ฉฐ, ์—ฐ์‚ฐ ํ›„์—๋Š” ์„ ์–ธํ•˜๋ฉด ์•ˆ ๋œ๋‹ค : ํ”„๋กœ๊ทธ๋žจ์€ ํ•œ๋ฒˆ ์ž‘์„ฑํ•˜๊ณ  ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ณ„์† ๋ณ€ํ™”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š” : ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง“๋Š” ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ณ  ์ฃผ์„์„ ์ž˜ ์‚ฌ์šฉ ์ž๋ฃŒํ˜• ๋ณ€..

[C programming] Hello, world!

๐ŸŒ Hello, world! ์‹๋ณ„์ž : ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๊ฐ’์— ๋ถ€์—ฌํ•œ ์ด๋ฆ„ ⇒ ๋ณ€์ˆ˜์ด๋ฆ„, ํ•จ์ˆ˜์ด๋ฆ„ ๋“ฑ // : ํ•ต์‹ฌ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ํ•จ์ˆ˜๋“ค์„ ์ •์˜ #include int main() { printf("Hello World!\n"); } ๐ŸŒ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ์™€ ๋‹จ์œ„ ๋””์ง€ํ„ธ ์‹ ํ˜ธ(0,1)๋กœ ์ž‘๋™(์ €์žฅ, ์—ฐ์‚ฐ), 0๊ณผ 1์„ ์ €์žฅ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ 1bit์˜ ์ตœ์†Œ ๋‹จ์œ„๋กœ ํ‘œํ˜„ 8๊ฐœ์˜ bit๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ด€๋ฆฌ, ์ด ๋•Œ์˜ ๋‹จ์œ„๋Š” Byte ์˜๋ฌธ ํ•œ๊ธ€์ž๋ฅผ ์ €์žฅ, ๊ฐ์ž์˜ ๊ณ ์œ ํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๐ŸŒ C ์–ธ์–ด์˜ ์ž๋ฃŒํ˜• โ›… ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” ์ •์ˆ˜ : 8bit ์ „ ๊ตฌ๊ฐ„์— ์ •์ˆ˜ํ˜•(Unsigned Integer) ํ‘œํ˜„ : ๋ถ€ํ˜ธ ์—†์Œ์˜ ์˜๋ฏธ๋Š” ์–‘์ˆ˜ ์™ธ์˜ ์Œ์ˆ˜๋Š” ํ‘œํ˜„ ํ•  ์ˆ˜ ์—†๋‹ค โ›… ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜ : ๋ถ€ํ˜ธ ๋น„ํŠธ(Sign Bi..