๐Ÿš€ ๋ช…๋ น์ค„ ์ธ์ˆ˜ ์ฒ˜๋ฆฌ: argc์™€ argv์˜ ์‹ ๋น„๋กœ์šด ์„ธ๊ณ„๋กœ ๋– ๋‚˜๋Š” ์—ฌํ–‰! ๐ŸŒŸ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿš€ ๋ช…๋ น์ค„ ์ธ์ˆ˜ ์ฒ˜๋ฆฌ: argc์™€ argv์˜ ์‹ ๋น„๋กœ์šด ์„ธ๊ณ„๋กœ ๋– ๋‚˜๋Š” ์—ฌํ–‰! ๐ŸŒŸ

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์ฝ”๋”ฉ ๋ชจํ—˜๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ˆจ๊ฒจ์ง„ ๋ณด๋ฌผ ์ค‘ ํ•˜๋‚˜์ธ "๋ช…๋ น์ค„ ์ธ์ˆ˜ ์ฒ˜๋ฆฌ"์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ํŠนํžˆ argc์™€ argv๋ผ๋Š” ๋‘ ์ฃผ์ธ๊ณต์„ ์ค‘์‹ฌ์œผ๋กœ ์ด์•ผ๊ธฐ๋ฅผ ํ’€์–ด๋‚˜๊ฐˆ ๊ฑฐ๋ž๋‹ˆ๋‹ค. ์ด ๋‘ ์นœ๊ตฌ๋Š” ๋งˆ์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์ž…๊ตฌ๋ฅผ ์ง€ํ‚ค๋Š” ๋ฌธ์ง€๊ธฐ ๊ฐ™์€ ์กด์žฌ์˜ˆ์š”. ๊ทธ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ์™œ ์ค‘์š”ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ•จ๊ป˜ ์•Œ์•„๋ณด์•„์š”! ๐Ÿ•ต๏ธโ€โ™‚๏ธ๐Ÿ”

์—ฌ๋Ÿฌ๋ถ„, ํ˜น์‹œ ์žฌ๋Šฅ๋„ท(https://www.jaenung.net)์ด๋ผ๋Š” ๋ฉ‹์ง„ ์žฌ๋Šฅ ๊ณต์œ  ํ”Œ๋žซํผ์„ ๋“ค์–ด๋ณด์…จ๋‚˜์š”? ์ด ์‚ฌ์ดํŠธ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์žฌ๋Šฅ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์ด ๋ชจ์—ฌ ์„œ๋กœ์˜ ์ง€์‹๊ณผ ๊ธฐ์ˆ ์„ ๋‚˜๋ˆ„๊ณ  ์žˆ์–ด์š”. ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šธ ๋‚ด์šฉ๋„ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์žฌ๋Šฅ์„ ํ•œ์ธต ๋” ์—…๊ทธ๋ ˆ์ด๋“œ์‹œ์ผœ์ค„ ๊ฑฐ์˜ˆ์š”. ๊ทธ๋Ÿผ ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๐Ÿ˜Š

๐ŸŽญ argc์™€ argv: ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆจ์€ ์ฃผ์ธ๊ณต๋“ค

์ž, ์—ฌ๋Ÿฌ๋ถ„! ์šฐ๋ฆฌ๊ฐ€ C ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ๋ณดํ†ต ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•˜๋‚˜์š”? ๊ทธ๋ ‡์ฃ , int main()์œผ๋กœ ์‹œ์ž‘ํ•˜์ฃ . ํ•˜์ง€๋งŒ ์˜ค๋Š˜์€ ์กฐ๊ธˆ ํŠน๋ณ„ํ•œ ์ฃผ์ธ๊ณต๋“ค์„ ์†Œ๊ฐœํ•  ๊ฑฐ์˜ˆ์š”. ๋ฐ”๋กœ int main(int argc, char *argv[])์ž…๋‹ˆ๋‹ค! ๐Ÿ˜ฒ

์ด ๋‘ ์นœ๊ตฌ, argc์™€ argv๋Š” ๋งˆ์น˜ ๋ฌด๋Œ€ ์œ„์˜ ๋ฐฐ์šฐ๋“ค์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘์„ ํ™”๋ คํ•˜๊ฒŒ ์žฅ์‹ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ด์š”. ๊ทธ๋Ÿผ ์ด ๋‘˜์ด ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋งˆ๋ฒ• ๊ฐ™์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”?

๐ŸŽญ argc (Argument Count)

argc๋Š” "argument count"์˜ ์ค„์ž„๋ง๋กœ, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ „๋‹ฌ๋œ ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์š”. ๋งˆ์น˜ ๋ฌด๋Œ€์— ์˜ค๋ฅธ ๋ฐฐ์šฐ์˜ ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ !

๐ŸŽญ argv (Argument Vector)

argv๋Š” "argument vector"์˜ ์ค„์ž„๋ง๋กœ, ํ”„๋กœ๊ทธ๋žจ์— ์ „๋‹ฌ๋œ ์‹ค์ œ ์ธ์ž๋“ค์˜ ๋ฌธ์ž์—ด ๋ฐฐ์—ด์ด์—์š”. ๊ฐ ๋ฐฐ์šฐ๊ฐ€ ๊ฐ€์ง„ ๋Œ€์‚ฌ ๋ชฉ๋ก์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

์ด ๋‘ ์ฃผ์ธ๊ณต์€ ํ•ญ์ƒ ํ•จ๊ป˜ ๋‹ค๋‹ˆ๋Š” ๋‹จ์ง ์นœ๊ตฌ ๊ฐ™์€ ์กด์žฌ์˜ˆ์š”. argc๊ฐ€ ๋ฌด๋Œ€์— ์˜ค๋ฅธ ๋ฐฐ์šฐ์˜ ์ˆ˜๋ผ๋ฉด, argv๋Š” ๊ฐ ๋ฐฐ์šฐ๊ฐ€ ๊ฐ€์ง„ ๋Œ€๋ณธ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์ฃ . ์ด ๋‘˜์„ ์ด์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋  ๋•Œ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ๊ด€๊ฐ์ด ๋ฐฐ์šฐ์—๊ฒŒ ์ฆ‰์„์—์„œ ๋Œ€์‚ฌ๋ฅผ ์ „ํ•ด์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ ! ๐ŸŽค๐Ÿ‘ฅ

argc์™€ argv์˜ ๊ด€๊ณ„ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ argc argv ์ฐธ์กฐ

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด์„ธ์š”. argc๋Š” ํ™ฉ๊ธˆ๋น› ์›์œผ๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ๊ณ , argv๋Š” ์ดˆ๋ก์ƒ‰ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ์–ด์š”. argc๊ฐ€ argv๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ์Šต์ด ๋ณด์ด์‹œ๋‚˜์š”? ์ด์ฒ˜๋Ÿผ argc์™€ argv๋Š” ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ต๋‹ˆ๋‹ค. ๐ŸŒŸ

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์ฃผ์ธ๊ณต๋“ค์„ ์กฐ๊ธˆ ์•Œ๊ฒŒ ๋˜์—ˆ๋„ค์š”. ํ•˜์ง€๋งŒ ์ด๋“ค์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๋†€๋ผ์šด ์ผ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ์–ด์š”. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” argc์™€ argv์˜ ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ๋ฅผ ํ†ตํ•ด ์ด๋“ค์˜ ํž˜์„ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ์ถœ๋ฐœ~! ๐Ÿš€

๐ŸŽฌ argc์™€ argv์˜ ์‹ค์ œ ์‚ฌ์šฉ: ๋ฌด๋Œ€ ์œ„์˜ ๋งˆ๋ฒ•

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์ฃผ์ธ๊ณต๋“ค์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณผ ์‹œ๊ฐ„์ด์—์š”! ๋งˆ์น˜ ๋ฌด๋Œ€ ์œ„์—์„œ ๋ฐฐ์šฐ๋“ค์ด ์—ฐ๊ธฐ๋ฅผ ํŽผ์น˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, argc์™€ argv๋„ ํ”„๋กœ๊ทธ๋žจ ์†์—์„œ ๋ฉ‹์ง„ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์—ฌ์ค„ ๊ฑฐ์˜ˆ์š”. ๐ŸŽญโœจ

๐ŸŒŸ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ ์˜ˆ์ œ

๋จผ์ €, argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”?


#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("์ „๋‹ฌ๋œ ์ธ์ž์˜ ๊ฐœ์ˆ˜: %d\n", argc);
    
    for(int i = 0; i < argc; i++) {
        printf("argv[%d]: %s\n", i, argv[i]);
    }
    
    return 0;
}
    

์ด ํ”„๋กœ๊ทธ๋žจ์€ ์ „๋‹ฌ๋ฐ›์€ ๋ชจ๋“  ์ธ์ž๋ฅผ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค. ์‹คํ–‰ํ•ด๋ณผ๊นŒ์š”?

์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ด๋ณด์„ธ์š”:

./program Hello World

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฑฐ์˜ˆ์š”:


์ „๋‹ฌ๋œ ์ธ์ž์˜ ๊ฐœ์ˆ˜: 3
argv[0]: ./program
argv[1]: Hello
argv[2]: World
  

๋†€๋ž์ง€ ์•Š๋‚˜์š”? argc๋Š” 3์ด ๋˜์—ˆ๊ณ , argv์—๋Š” ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„์„ ํฌํ•จํ•œ ์„ธ ๊ฐœ์˜ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์žˆ์–ด์š”. ์ด์ฒ˜๋Ÿผ argc์™€ argv๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ „๋‹ฌ๋œ ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๐ŸŽ‰

๐Ÿค” ์™œ argc๋Š” 3์ผ๊นŒ์š”?

์—ฌ๋Ÿฌ๋ถ„, ํ˜น์‹œ ์˜๋ฌธ์ด ๋“ค์ง€ ์•Š๋‚˜์š”? ์šฐ๋ฆฌ๊ฐ€ ์ „๋‹ฌํ•œ ์ธ์ž๋Š” "Hello"์™€ "World" ๋‘ ๊ฐœ์ธ๋ฐ, ์™œ argc๋Š” 3์ผ๊นŒ์š”?

๊ทธ ์ด์œ ๋Š” ๋ฐ”๋กœ argv[0]์ด ํ•ญ์ƒ ํ”„๋กœ๊ทธ๋žจ์˜ ์ด๋ฆ„(๋˜๋Š” ์‹คํ–‰ ๊ฒฝ๋กœ)์„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”! ๋”ฐ๋ผ์„œ:

  • argv[0]: ํ”„๋กœ๊ทธ๋žจ ์ด๋ฆ„ ("./program")
  • argv[1]: ์ฒซ ๋ฒˆ์งธ ์ธ์ž ("Hello")
  • argv[2]: ๋‘ ๋ฒˆ์งธ ์ธ์ž ("World")

์ด๋ ‡๊ฒŒ ์ด 3๊ฐœ์˜ ์ธ์ž๊ฐ€ ๋˜๋Š” ๊ฑฐ์ฃ !

์ด์ œ argc์™€ argv์˜ ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜์…จ๋‚˜์š”? ์ด ๋‘ ์นœ๊ตฌ๋Š” ๋งˆ์น˜ ๋ฌด๋Œ€ ์œ„์˜ ๋งˆ์ˆ ์‚ฌ์ฒ˜๋Ÿผ, ์‚ฌ์šฉ์ž๊ฐ€ ์ „๋‹ฌํ•œ ์ •๋ณด๋ฅผ ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋งˆ๋ฒ•์„ ๋ถ€๋ฆฌ๊ณ  ์žˆ์–ด์š”. ๐ŸŽฉโœจ

ํ•˜์ง€๋งŒ ์ด๊ฒŒ ์ „๋ถ€๊ฐ€ ์•„๋‹ˆ์—์š”! argc์™€ argv๋Š” ๋” ๋งŽ์€ ์žฌ์ฃผ๋ฅผ ๋ถ€๋ฆด ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ์ด ๋‘ ์ฃผ์ธ๊ณต์„ ํ™œ์šฉํ•œ ๋” ํฅ๋ฏธ๋กœ์šด ์˜ˆ์ œ๋“ค์„ ์‚ดํŽด๋ณด๋„๋ก ํ• ๊ฒŒ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค๋ ฅ์ด ํ•œ ๋‹จ๊ณ„ ๋” ์—…๊ทธ๋ ˆ์ด๋“œ๋  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ„์†ํ•ด์„œ ์šฐ๋ฆฌ์˜ ๋งˆ๋ฒ• ๊ฐ™์€ ์—ฌ์ •์„ ์ด์–ด๊ฐ€๋ณผ๊นŒ์š”? ๐Ÿš€๐ŸŒŸ

๐ŸŽญ argc์™€ argv์˜ ๊ณ ๊ธ‰ ํ™œ์šฉ: ๋ฌด๋Œ€๋ฅผ ๋„˜์–ด์„œ

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์ฃผ์ธ๊ณต๋“ค argc์™€ argv๊ฐ€ ์–ด๋–ค ๋†€๋ผ์šด ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€ ๋ณผ ์‹œ๊ฐ„์ด์—์š”! ๋งˆ์น˜ ๋ฒ ํ…Œ๋ž‘ ๋ฐฐ์šฐ๋“ค์ด ๋‹ค์–‘ํ•œ ์—ญํ• ์„ ์†Œํ™”ํ•˜๋“ฏ, argc์™€ argv๋„ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ํ™œ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ํ•จ๊ป˜ ์‚ดํŽด๋ณผ๊นŒ์š”? ๐Ÿ•ต๏ธโ€โ™€๏ธ๐Ÿ”

1. ๐Ÿงฎ ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ

argc์™€ argv๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”? ๋‘ ์ˆ˜์™€ ์—ฐ์‚ฐ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋ด์š”.


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if(argc != 4) {
        printf("์‚ฌ์šฉ๋ฒ•: %s <์ˆซ์ž1> <์—ฐ์‚ฐ์ž> <์ˆซ์ž2>\n", argv[0]);
        return 1;
    }

    double num1 = atof(argv[1]);
    char op = argv[2][0];
    double num2 = atof(argv[3]);
    double result;

    switch(op) {
        case '+':
            result = num1 + num2;
            break;
        case '-':
            result = num1 - num2;
            break;
        case '*':
            result = num1 * num2;
            break;
        case '/':
            if(num2 == 0) {
                printf("์˜ค๋ฅ˜: 0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n");
                return 1;
            }
            result = num1 / num2;
            break;
        default:
            printf("์ง€์›ํ•˜์ง€ ์•Š๋Š” ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.\n");
            return 1;
    }

    printf("๊ฒฐ๊ณผ: %.2f\n", result);
    return 0;
}
    

์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ด๋ณด์„ธ์š”:

./calculator 10 + 5

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฑฐ์˜ˆ์š”:

๊ฒฐ๊ณผ: 15.00

์™€์šฐ! ์ •๋ง ๋ฉ‹์ง€์ง€ ์•Š๋‚˜์š”? argc์™€ argv๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“ค์—ˆ์–ด์š”. ์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋ช…๋ น์ค„์—์„œ ๋‘ ๊ฐœ์˜ ์ˆซ์ž์™€ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ›์•„ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ์ฃผ๋ฌธ์„ ์™ธ์šฐ๋“ฏ, ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด๋ƒˆ์–ด์š”! ๐Ÿง™โ€โ™‚๏ธโœจ

2. ๐Ÿ“ ํŒŒ์ผ ๋ณต์‚ฌ ํ”„๋กœ๊ทธ๋žจ

์ด๋ฒˆ์—๋Š” argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”?


#include <stdio.h>

int main(int argc, char *argv[]) {
    FILE *source, *destination;
    char ch;

    if(argc != 3) {
        printf("์‚ฌ์šฉ๋ฒ•: %s <์›๋ณธ ํŒŒ์ผ> <๋Œ€์ƒ ํŒŒ์ผ>\n", argv[0]);
        return 1;
    }

    source = fopen(argv[1], "r");
    if(source == NULL) {
        printf("์›๋ณธ ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n");
        return 1;
    }

    destination = fopen(argv[2], "w");
    if(destination == NULL) {
        printf("๋Œ€์ƒ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n");
        fclose(source);
        return 1;
    }

    while((ch = fgetc(source)) != EOF) {
        fputc(ch, destination);
    }

    printf("ํŒŒ์ผ์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\n");

    fclose(source);
    fclose(destination);

    return 0;
}
    

์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ด๋ณด์„ธ์š”:

./file_copy original.txt copy.txt

์ด ๋ช…๋ น์€ 'original.txt' ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ 'copy.txt'๋กœ ๋ณต์‚ฌํ•  ๊ฑฐ์˜ˆ์š”.

๋†€๋ž์ง€ ์•Š๋‚˜์š”? argc์™€ argv๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ ๋ณต์‚ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ์–ด์š”. ์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋ช…๋ น์ค„์—์„œ ์›๋ณธ ํŒŒ์ผ๊ณผ ๋Œ€์ƒ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฐ›์•„ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋ณต์‚ฌ๊ธฐ๊ฐ€ ์ข…์ด๋ฅผ ๋ณต์‚ฌํ•˜๋“ฏ, ์šฐ๋ฆฌ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ํŒŒ์ผ์„ ๋ณต์‚ฌํ–ˆ์–ด์š”! ๐Ÿ“ ๐Ÿ’จ

argc์™€ argv๋ฅผ ์ด์šฉํ•œ ํŒŒ์ผ ๋ณต์‚ฌ ๊ณผ์ • ํŒŒ์ผ ๋ณต์‚ฌ ๊ณผ์ • ์›๋ณธ ํŒŒ์ผ (argv[1]) ๋ณต์‚ฌ ๋Œ€์ƒ ํŒŒ์ผ (argv[2])

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด์„ธ์š”. argv[1]์€ ์›๋ณธ ํŒŒ์ผ์„, argv[2]๋Š” ๋Œ€์ƒ ํŒŒ์ผ์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์–ด์š”. ํ”„๋กœ๊ทธ๋žจ์€ ์ด ๋‘ ์ธ์ž๋ฅผ ์ด์šฉํ•ด ํŒŒ์ผ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฑฐ์ฃ . ๋งˆ์น˜ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ์ง€ํŒก์ด๋กœ ๋ฌผ๊ฑด์„ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์—์š”! ๐Ÿง™โ€โ™‚๏ธโœจ

์ด์ฒ˜๋Ÿผ argc์™€ argv๋Š” ๋‹จ์ˆœํžˆ ํ”„๋กœ๊ทธ๋žจ์— ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด์„œ, ๋‹ค์–‘ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์–ด์š”. ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด์ œ argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•ด ์ž์‹ ๋งŒ์˜ ๋งˆ๋ฒ• ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”!

๋‹ค์Œ ์„น์…˜์—์„œ๋Š” argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ๋“ค๊ณผ ๋ช‡ ๊ฐ€์ง€ ๊ณ ๊ธ‰ ํ…Œํฌ๋‹‰์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค๋ ฅ์ด ํ•œ ๋‹จ๊ณ„ ๋” ์—…๊ทธ๋ ˆ์ด๋“œ๋  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ„์†ํ•ด์„œ ์šฐ๋ฆฌ์˜ ๋งˆ๋ฒ• ๊ฐ™์€ ์—ฌ์ •์„ ์ด์–ด๊ฐ€๋ณผ๊นŒ์š”? ๐Ÿš€๐ŸŒŸ

๐Ÿ›ก๏ธ argc์™€ argv ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ: ์•ˆ์ „ํ•œ ๋ฌด๋Œ€ ๋งŒ๋“ค๊ธฐ

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์ฃผ์ธ๊ณต๋“ค argc์™€ argv๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ•๋ ฅํ•œ์ง€ ์•Œ๊ฒŒ ๋˜์—ˆ์–ด์š”. ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๊ฐ€ ๊ทธ๋ ‡๋“ฏ, ์ด๋“ค๋„ ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ๋‹ค๋ค„์•ผ ํ•ด์š”. ๋งˆ์น˜ ๋ฌด๋Œ€ ์œ„์˜ ํŠน์ˆ˜ ํšจ๊ณผ์ฒ˜๋Ÿผ, ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”. ๊ทธ๋Ÿผ argc์™€ argv๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊นŒ์š”? ๐Ÿ›ก๏ธ๐Ÿ”’

1. ๐Ÿšจ ์ธ์ž ๊ฐœ์ˆ˜ ํ™•์ธํ•˜๊ธฐ

ํ”„๋กœ๊ทธ๋žจ์ด ๊ธฐ๋Œ€ํ•˜๋Š” ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ํ•ญ์ƒ ํ™•์ธํ•ด์•ผ ํ•ด์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์–ด์š”.


if(argc != expected_argc) {
    printf("์‚ฌ์šฉ๋ฒ•: %s <์ธ์ž1> <์ธ์ž2> ...\n", argv[0]);
    return 1;
}
    

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ฐœ์ˆ˜์˜ ์ธ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ํ”„๋กœ๊ทธ๋žจ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒ๋ผ์š”.

์ธ์ž ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์ค‘์š”ํ•ด์š”! ๋งˆ์น˜ ๋ฌด๋Œ€์— ์˜ค๋ฅด๊ธฐ ์ „ ๋ฐฐ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ . ์ถฉ๋ถ„ํ•œ ๋ฐฐ์šฐ๊ฐ€ ์—†๋‹ค๋ฉด ๊ณต์—ฐ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์ถฉ๋ถ„ํ•œ ์ธ์ž๊ฐ€ ์—†์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์–ด์š”. ๐ŸŽญ๐Ÿšซ

2. ๐Ÿง ์ธ์ž ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ธ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์ด ๊ธฐ๋Œ€ํ•˜๋Š” ํ˜•์‹์ธ์ง€ ํ•ญ์ƒ ํ™•์ธํ•ด์•ผ ํ•ด์š”.


#include <stdlib.h>
#include <ctype.h>

int is_number(char* str) {
    for (int i = 0; str[i] != '\0'; i++) {
        if (!isdigit(str[i])) {
            return 0;
        }
    }
    return 1;
}

int main(int argc, char *argv[]) {
    if(argc != 2) {
        printf("์‚ฌ์šฉ๋ฒ•: %s <์ˆซ์ž>\n", argv[0]);
        return 1;
    }

    if(!is_number(argv[1])) {
        printf("์˜ค๋ฅ˜: ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.\n");
        return 1;
    }

    int num = atoi(argv[1]);
    printf("์ž…๋ ฅํ•œ ์ˆซ์ž: %d\n", num);

    return 0;
}
    

์ด ์˜ˆ์ œ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ์–ด์š”. ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฑฐ์ฃ .

์ธ์ž์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•ด์š”! ๋งˆ์น˜ ๋ฌด๋Œ€์— ์˜ค๋ฅด๊ธฐ ์ „ ๋ฐฐ์šฐ๋“ค์˜ ์˜์ƒ๊ณผ ์†Œํ’ˆ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ์˜ฌ๋ฐ”๋ฅธ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ณต์—ฐ์ด ๋ง์น  ์ˆ˜ ์žˆ๋“ฏ์ด, ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์ธ์ž๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์˜ค์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ๐Ÿ•ต๏ธโ€โ™€๏ธ๐Ÿ‘—

argc์™€ argv ์‚ฌ์šฉ ์‹œ ์•ˆ์ „ ์ฒดํฌ ๊ณผ์ • argc์™€ argv ์•ˆ์ „ ์ฒดํฌ ๊ณผ์ • ์‹œ์ž‘ ์ธ์ž ๊ฐœ์ˆ˜ ํ™•์ธ ์ธ์ž ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ข…๋ฃŒ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์—๋Ÿฌ ์ฒ˜๋ฆฌ

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด์„ธ์š”. ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๋ฉด ๋จผ์ € ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์ธ์ž์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•ด์š”. ์ด ๋‘ ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผํ•ด์•ผ๋งŒ ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๊ฑฐ์ฃ . ๋งŒ์•ฝ ์–ด๋Š ๋‹จ๊ณ„์—์„œ๋“  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ณผ์ •์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ผ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค! ๐Ÿ›ก๏ธ๐Ÿ”’

3. ๐Ÿ”’ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€

argv๋กœ ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃฐ ๋•Œ๋Š” ํ•ญ์ƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์— ์ฃผ์˜ํ•ด์•ผ ํ•ด์š”.


#include <string.h>

#define MAX_LENGTH 100

int main(int argc, char *argv[]) {
    if(argc != 2) {
        printf("์‚ฌ์šฉ๋ฒ•: %s <์ด๋ฆ„>\n", argv[0]);
        return 1;
    }

    char name[MAX_LENGTH];
    strncpy(name, argv[1], MAX_LENGTH - 1);
    name[MAX_LENGTH - 1] = '\0';  // ๋ฌธ์ž์—ด ๋์„ ๋ณด์žฅ

    printf("์•ˆ๋…•ํ•˜์„ธ์š”, %s๋‹˜!\n", name);

    return 0;
}
    

์ด ์˜ˆ์ œ์—์„œ๋Š” strncpy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ๋œ ์ด๋ฆ„์˜ ๊ธธ์ด๋ฅผ ์ œํ•œํ•˜๊ณ  ์žˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์ฃ .

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์ค‘์š”ํ•ด์š”! ๋งˆ์น˜ ๋ฌด๋Œ€ ์œ„์—์„œ ๋ฐฐ์šฐ๊ฐ€ ์ •ํ•ด์ง„ ์˜์—ญ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด์„œ๋ฉด ์‚ฌ๊ณ ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋“ฏ์ด, ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋„ ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”. ๐Ÿšง๐Ÿšซ

์ด๋ ‡๊ฒŒ argc์™€ argv๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์–ด์š”. ์ด๋Ÿฐ ์ฃผ์˜์‚ฌํ•ญ๋“ค์„ ์ž˜ ์ง€ํ‚ค๋ฉด, ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋”์šฑ ์•ˆ์ •์ ์ด๊ณ  ์•ˆ์ „ํ•ด์งˆ ๊ฑฐ์˜ˆ์š”. ๋งˆ์น˜ ์ž˜ ์ค€๋น„๋œ ๋ฌด๋Œ€ ์œ„์—์„œ ์™„๋ฒฝํ•œ ๊ณต์—ฐ์„ ํŽผ์น˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ ! ๐ŸŽญโœจ

์ž, ์ด์ œ ์šฐ๋ฆฌ๋Š” argc์™€ argv์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ๊ณ ๊ธ‰ ํ™œ์šฉ, ๊ทธ๋ฆฌ๊ณ  ์•ˆ์ „ํ•œ ์‚ฌ์šฉ๋ฒ•๊นŒ์ง€ ๋ชจ๋‘ ๋ฐฐ์› ์–ด์š”. ์—ฌ๋Ÿฌ๋ถ„์€ ์ด์ œ ์ด ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋“ค์„ ์ž์œ ์ž์žฌ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์‹ค๋ ฅ์ž๊ฐ€ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค! ๐ŸŽ‰๐Ÿ‘

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ์—ฌ์ •์€ ์—ฌ๊ธฐ์„œ ๋๋‚˜์ง€ ์•Š์•„์š”. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์„ธ๊ณ„๋Š” ๋ฌด๊ถ๋ฌด์ง„ํ•˜๋‹ˆ๊นŒ์š”. ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” argc์™€ argv๋ฅผ ํ™œ์šฉํ•œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด์„œ, ์šฐ๋ฆฌ์˜ ์ง€์‹์„ ๋”์šฑ ๊ณต๊ณ ํžˆ ํ•ด๋ณผ ๊ฑฐ์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ๊ณ„์†ํ•ด์„œ ์šฐ๋ฆฌ์˜ ์‹ ๋‚˜๋Š” ์ฝ”๋”ฉ ๋ชจํ—˜์„ ์ด์–ด๊ฐ€๋ณผ๊นŒ์š”? ๐Ÿš€๐ŸŒŸ

๐ŸŽจ argc์™€ argv๋ฅผ ํ™œ์šฉํ•œ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ: ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ

์ž, ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋ชจ๋“  ๊ฒƒ์„ ์ข…ํ•ฉํ•ด์„œ ์žฌ๋ฏธ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ ๊ฑฐ์˜ˆ์š”! ์ด๋ฒˆ์—๋Š” argc์™€ argv๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊นŒ์š”? ์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋ช…๋ น์ค„ ์ธ์ž๋ฅผ ํ†ตํ•ด ๊ทธ๋ฆผ์˜ ํฌ๊ธฐ์™€ ๋‚ด์šฉ์„ ๋ฐ›์•„ ์ฝ˜์†”์— ์ถœ๋ ฅํ•  ๊ฑฐ์˜ˆ์š”. ๋งˆ์น˜ ๋งˆ๋ฒ• ์ง€ํŒก์ด๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ด์ฃ ! ๐Ÿ–Œ๏ธโœจ

๐ŸŽจ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ ํ”„๋กœ๊ทธ๋žจ


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_SIZE 50

void draw_picture(int width, int height, char symbol) {
    for(int i = 0; i < height; i++) {
        for(int j = 0; j < width; j++) {
            printf("%c ", symbol);
        }
        printf("\n");
    }
}

int main(int argc, char *argv[]) {
    if(argc != 4) {
        printf("์‚ฌ์šฉ๋ฒ•: %s <๋„ˆ๋น„> <๋†’์ด> <์‹ฌ๋ณผ>\n", argv[0]);
        return 1;
    }

    int width = atoi(argv[1]);
    int height = atoi(argv[2]);
    char symbol = argv[3][0];

    if(width <= 0 || width > MAX_SIZE || height <= 0 || height > MAX_SIZE) {
        printf("์˜ค๋ฅ˜: ๋„ˆ๋น„์™€ ๋†’์ด๋Š” 1์—์„œ %d ์‚ฌ์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n", MAX_SIZE);
        return 1;
    }

    if(strlen(argv[3]) != 1) {
        printf("์˜ค๋ฅ˜: ์‹ฌ๋ณผ์€ ํ•œ ๊ธ€์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n");
        return 1;
    }

    printf("์—ฌ๋Ÿฌ๋ถ„์˜ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค!\n\n");
    draw_picture(width, height, symbol);

    return 0;
}
    

์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‹คํ–‰ํ•ด๋ณด์„ธ์š”:

./draw_picture 5 4 *

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๊ฑฐ์˜ˆ์š”:


์—ฌ๋Ÿฌ๋ถ„์˜ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค!

* * * * * 
* * * * * 
* * * * * 
* * * * * 
    

์™€์šฐ! ์ •๋ง ๋ฉ‹์ง„ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์กŒ์–ด์š”! ์ด ํ”„๋กœ๊ทธ๋žจ์€ argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๊ทธ๋ฆผ์˜ ๋„ˆ๋น„, ๋†’์ด, ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•  ์‹ฌ๋ณผ์„ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ณ  ์žˆ์–ด์š”. ๋งˆ์น˜ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ์ฃผ๋ฌธ์„ ์™ธ์›Œ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‚˜์š”? ๐Ÿง™โ€โ™‚๏ธ๐ŸŽจ

์ด ํ”„๋กœ๊ทธ๋žจ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์•ˆ์ „์žฅ์น˜๋“ค๋„ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด์š”:

  • ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ์–ด์š” (if(argc != 4))
  • ๋„ˆ๋น„์™€ ๋†’์ด๊ฐ€ ์œ ํšจํ•œ ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๊ณ  ์žˆ์–ด์š”
  • ์‹ฌ๋ณผ์ด ํ•œ ๊ธ€์ž์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ์–ด์š”

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค! ๐Ÿ›ก๏ธ๐Ÿ”’

๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ ์ž‘๋™ ๊ณผ์ • ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ ์ž‘๋™ ๊ณผ์ • ์ž…๋ ฅ ๋„ˆ๋น„, ๋†’์ด, ์‹ฌ๋ณผ ๊ฒ€์ฆ ์ธ์ž ๊ฐœ์ˆ˜ ๋ฐ ์œ ํšจ์„ฑ ๊ทธ๋ฆฌ๊ธฐ ์ฝ˜์†”์— ์ถœ๋ ฅ ๊ฒฐ๊ณผ ๊ทธ๋ ค์ง„ ๊ทธ๋ฆผ

์œ„์˜ ๊ทธ๋ฆผ์€ ์šฐ๋ฆฌ์˜ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์–ด์š”. ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„, ๊ฒ€์ฆ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„, ์‹ค์ œ๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์ฃ . ๋งˆ์น˜ ๊ณต์žฅ์—์„œ ์ œํ’ˆ์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ณผ์ • ๊ฐ™์ง€ ์•Š๋‚˜์š”? ๐Ÿญ๐ŸŽจ

์ด ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” argc์™€ argv๋ฅผ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐฐ์› ์–ด์š”. ๋‹จ์ˆœํžˆ ์ธ์ž๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์„ ๋„˜์–ด์„œ, ๊ทธ ์ธ์ž๋“ค์„ ๊ฐ€์ง€๊ณ  ์‹ค์ œ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณผ์ •์„ ๊ฒฝํ—˜ํ–ˆ์ฃ . ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํž˜์ด์—์š”! ๐Ÿš€๐Ÿ’ช

์—ฌ๋Ÿฌ๋ถ„๋„ ์ด์ œ argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž์‹ ๋งŒ์˜ ๋ฉ‹์ง„ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ์–ด๋–ค ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ค๋ฅด๋‚˜์š”? ๋ช…๋ น์ค„ ๊ณ„์‚ฐ๊ธฐ? ๊ฐ„๋‹จํ•œ ๊ฒŒ์ž„? ์•„๋‹ˆ๋ฉด ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์•„ํŠธ ์ƒ์„ฑ๊ธฐ? ๊ฐ€๋Šฅ์„ฑ์€ ๋ฌดํ•œํ•˜๋‹ต๋‹ˆ๋‹ค! ๐ŸŒˆ๐ŸŽจ

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ argc์™€ argv ์—ฌํ–‰์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ๋งˆ์ง€๋ง‰ ์„น์…˜์—์„œ๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ •๋ฆฌํ•˜๊ณ , ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์ด ๋‚˜์•„๊ฐˆ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณผ ๊ฑฐ์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ์šฐ๋ฆฌ์˜ ๋Œ€์žฅ์ •์˜ ๋งˆ์ง€๋ง‰์„ ํ–ฅํ•ด ์ถœ๋ฐœ~! ๐Ÿš€๐ŸŒŸ

๐ŸŽ“ ์ •๋ฆฌ ๋ฐ ์•ž์œผ๋กœ์˜ ์—ฌ์ •: argc์™€ argv ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜๋Š” ๊ธธ

์™€์šฐ! ์ •๋ง ๊ธด ์—ฌ์ •์ด์—ˆ์ฃ ? ์—ฌ๋Ÿฌ๋ถ„, ์ •๋ง ๋Œ€๋‹จํ•ด์š”! ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€ argc์™€ argv์˜ ์ง„์ •ํ•œ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค. ๐Ÿ‘๐ŸŽ‰ ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ , ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์ด ๋‚˜์•„๊ฐˆ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณผ๊ฒŒ์š”.

๐ŸŒŸ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๊ฒƒ๋“ค

  1. argc์™€ argv์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
  2. argc์™€ argv๋ฅผ ํ™œ์šฉํ•œ ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
  3. argc์™€ argv๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ฃผ์˜์‚ฌํ•ญ๊ณผ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ๋ฒ•
  4. argc์™€ argv๋ฅผ ํ™œ์šฉํ•œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ (๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๋„๊ตฌ)

์—ฌ๋Ÿฌ๋ถ„์€ ์ด์ œ ์ง„์ •ํ•œ argc์™€ argv์˜ ๋งˆ๋ฒ•์‚ฌ๊ฐ€ ๋˜์—ˆ์–ด์š”! ๋งˆ์น˜ ํ•ด๋ฆฌ ํฌํ„ฐ๊ฐ€ ํ˜ธ๊ทธ์™€ํŠธ์—์„œ ๋งˆ๋ฒ•์„ ๋ฐฐ์šฐ๋“ฏ, ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋งˆ๋ฒ•์„ ๋ถ€๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์ฃ . ๐Ÿง™โ€โ™‚๏ธโœจ

๐Ÿš€ ์•ž์œผ๋กœ์˜ ์—ฌ์ •

argc์™€ argv๋Š” ๋‹จ์ง€ ์‹œ์ž‘์ผ ๋ฟ์ด์—์š”. ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€ ๋” ๋„“์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์„ธ๊ณ„๋กœ ๋‚˜์•„๊ฐˆ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค!

  • ๋‹ค์–‘ํ•œ ๋ช…๋ น์ค„ ๋„๊ตฌ ๋งŒ๋“ค๊ธฐ
  • ํŒŒ์ผ ์ž…์ถœ๋ ฅ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋” ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ
  • ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ argc์™€ argv ํ™œ์šฉํ•˜๊ธฐ
  • GUI ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ๋ช…๋ น์ค„ ์ธ์ž ํ™œ์šฉํ•˜๊ธฐ

์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฌ์ •์€ ์ด์ œ ๋ง‰ ์‹œ์ž‘๋˜์—ˆ์–ด์š”. argc์™€ argv๋Š” ๊ทธ ์—ฌ์ •์˜ ์ฒซ ๊ฑธ์Œ์ผ ๋ฟ์ด์ฃ . ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“ค์–ด๋‚ผ ๋†€๋ผ์šด ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์ƒ๊ฐํ•˜๋ฉด ์ •๋ง ์„ค๋ ˆ์ง€ ์•Š๋‚˜์š”? ๐ŸŒˆ๐Ÿš€

argc์™€ argv ๋งˆ์Šคํ„ฐ์˜ ์—ฌ์ • argc์™€ argv ๋งˆ์Šคํ„ฐ์˜ ์—ฌ์ • ์‹œ์ž‘ ๊ธฐ๋ณธ ๊ฐœ๋… ํ™œ์šฉ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ ํ”„๋กœ์ ํŠธ

์œ„์˜ ๊ทธ๋ฆผ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ง€๊ธˆ๊นŒ์ง€ ๊ฑธ์–ด์˜จ argc์™€ argv ๋งˆ์Šคํ„ฐ์˜ ์—ฌ์ •์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์–ด์š”. ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ, ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์„ ์ตํžˆ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ์™„์„ฑํ–ˆ์ฃ . ์ •๋ง ๋Œ€๋‹จํ•œ ์—ฌ์ •์ด์—ˆ์–ด์š”! ๐Ÿ‘๐ŸŽ‰

์—ฌ๋Ÿฌ๋ถ„, ์ด์ œ argc์™€ argv์˜ ์„ธ๊ณ„๋ฅผ ์ •๋ณตํ–ˆ์–ด์š”. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ์‹œ์ž‘์ด์—์š”. ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„์€ ์ด ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ๋” ํฐ ์„ธ๊ณ„๋กœ ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ์–ด์š”. ์–ด์ฉŒ๋ฉด ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ์–ธ์  ๊ฐ€๋Š” ์ „ ์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‚ฌ์šฉ๋ ์ง€๋„ ๋ชจ๋ฅด์ฃ ! ๐ŸŒ๐Ÿ’ป

๊ธฐ์–ตํ•˜์„ธ์š”, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์„ธ๊ณ„์—๋Š” ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์—ฌ๋Ÿฌ๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์–ด์š”. ํ˜ธ๊ธฐ์‹ฌ์„ ์žƒ์ง€ ๋ง๊ณ , ๊ณ„์†ํ•ด์„œ ๋„์ „ํ•˜์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ์ƒ๋ ฅ์ด ๊ณง ํ˜„์‹ค์ด ๋  ๊ฑฐ์˜ˆ์š”. ๐Ÿš€๐ŸŒˆ

์ž, ์ด์ œ ์ •๋ง๋กœ ์šฐ๋ฆฌ์˜ ์—ฌ์ •์ด ๋๋‚ฌ์–ด์š”. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจํ—˜์€ ์ด์ œ ๋ง‰ ์‹œ์ž‘๋˜์—ˆ๋‹ต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“ค์–ด๋‚ผ ๋†€๋ผ์šด ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์ƒ๊ฐํ•˜๋ฉด ์ •๋ง ๊ธฐ๋Œ€๋˜์ง€ ์•Š๋‚˜์š”? ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฏธ๋ž˜๋Š” ์ •๋ง ๋ฐ์•„์š”! โœจ๐ŸŽ†

๊ทธ๋Ÿผ, ๋‹ค์Œ์— ๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ์ง„์ง„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฃผ์ œ๋กœ ๋งŒ๋‚˜์š”. ํ•ญ์ƒ ํ˜ธ๊ธฐ์‹ฌ์„ ๊ฐ–๊ณ , ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•˜๊ณ , ์ฆ๊ฒ๊ฒŒ ์ฝ”๋”ฉํ•˜์„ธ์š”! ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ฏธ๋ž˜๋ฅผ ์‘์›ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ‘‹๐Ÿ˜Š