Post

[C] ๋ฌธ์ž์—ด

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

C๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ๋ฌธ์ž์—ด์€ ์ž ๊น์”ฉ ๋ดค์ง€๋งŒ, ์•Œ๊ณ  ๋ณด๋ฉด ๊ฝค ๋ณต์žกํ•œ ๋…€์„์ด๋‹ค. C์—๋Š” ๋ฌธ์ž์—ด ํƒ€์ž…์ด ๋”ฐ๋กœ ์—†์–ด์„œ char[] ๋ฐฐ์—ด + '\0'(๋„ ๋ฌธ์ž)๋กœ ๋‹ค๋ฃจ๊ณ , ๊ฐ์ข… ์ฒ˜๋ฆฌ๋Š” string.h์˜ str___ ํ•จ์ˆ˜๋“ค์— ๋งก๊ธด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋“ค์„ ์ •๋ฆฌํ•œ๋‹ค.

์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜ (๋ชจ๋‘ #include <string.h>)

ํ•จ์ˆ˜๊ธฐ๋Šฅ
strlen๋ฌธ์ž์—ด ๊ธธ์ด(๋ฌธ์ž ๊ฐœ์ˆ˜) ๋ฐ˜ํ™˜
strcmp๋‘ ๋ฌธ์ž์—ด ๋น„๊ต
strcpy๋ฌธ์ž์—ด ๋ณต์‚ฌ
strcat๋ฌธ์ž์—ด ์ด์–ด๋ถ™์ด๊ธฐ
strchr๋ฌธ์ž์—ด์—์„œ โ€˜๋ฌธ์žโ€™ ๊ฒ€์ƒ‰
strstr๋ฌธ์ž์—ด์—์„œ โ€˜๋ฌธ์ž์—ดโ€™ ๊ฒ€์ƒ‰
strupr / strlwr๋Œ€๋ฌธ์ž / ์†Œ๋ฌธ์ž ๋ณ€ํ™˜

1. strlen โ€” ๋ฌธ์ž์—ด ๊ธธ์ด

1
2
strlen(๋ฌธ์ž์—ดํฌ์ธํ„ฐ);
strlen(๋ฌธ์ž๋ฐฐ์—ด);

Desktop View

s1 ํฌ์ธํ„ฐ์—๋Š” "Hello"์˜ ์ฃผ์†Œ๋ฅผ, s2์—๋Š” ๊ธธ์ด 10์ธ char ๋ฐฐ์—ด์— ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ–ˆ๋‹ค. ๋ฌธ์ž์—ด ๋์—๋Š” ๋„ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋‹ˆ, strlen์„ ์“ฐ๋ฉด 6์ด ๋‚˜์˜ฌ๊นŒ?

Desktop View

5๊ฐ€ ๋‚˜์˜จ๋‹ค. strlen์€ ๋„ ๋ฌธ์ž('\0')๋ฅผ ์ œ์™ธํ•œ ์ˆœ์ˆ˜ ๋ฌธ์ž ๊ฐœ์ˆ˜๋งŒ ์„ผ๋‹ค.


2. strcmp โ€” ๋ฌธ์ž์—ด ๋น„๊ต

1
strcmp(๋ฌธ์ž์—ด1, ๋ฌธ์ž์—ด2);

str + cmp(compare), ์ฆ‰ ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•œ๋‹ค. ๋น„๊ต ๊ธฐ์ค€์€ ASCII ์ฝ”๋“œ๋‹ค. (์˜ˆ์ „์— a, A๋ฅผ ์ˆซ์ž๋กœ ๋‚˜ํƒ€๋ƒˆ๋˜ ๊ทธ ๊ณ ์œ ๊ฐ’)

๋ฐ˜ํ™˜๊ฐ’์˜๋ฏธ
-1ASCII ๊ธฐ์ค€ ๋ฌธ์ž์—ด2(s2)๊ฐ€ ํด ๋•Œ
0๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ™์„ ๋•Œ
1ASCII ๊ธฐ์ค€ ๋ฌธ์ž์—ด1(s1)์ด ํด ๋•Œ

Desktop View

s2์— Helloo์ฒ˜๋Ÿผ ๋ฌธ์ž๊ฐ€ ํ•˜๋‚˜ ๋” ๋ถ™์œผ๋ฉด s2๊ฐ€ ๋” ํฌ๋‹ค.

Desktop View

-1์ด ์ถœ๋ ฅ๋˜๊ณ , ์ž‘์„ฑํ•œ if๋ฌธ๋Œ€๋กœ ๋ถ„๊ธฐ๊ฐ€ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.


3. strcpy โ€” ๋ฌธ์ž์—ด ๋ณต์‚ฌ

1
strcpy(๋Œ€์ƒ๋ฌธ์ž์—ด, ์›๋ณธ๋ฌธ์ž์—ด);   // ๋Œ€์ƒ๋ฌธ์ž์—ด์˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜

Desktop View

s1์—๋Š” Hello๋ฅผ ๋„ฃ๊ณ , s2๋Š” ์ดˆ๊ธฐํ™” ์—†์ด ์„ ์–ธ๋งŒ ํ–ˆ๋‹ค(โ†’ ์“ฐ๋ ˆ๊ธฐ๊ฐ’). strcpy ์ „๊ณผ ํ›„๋กœ ๋‚˜๋ˆ  s2๋ฅผ ์ถœ๋ ฅํ•ด ๋ณด์ž.

Desktop View

๋ณต์‚ฌ ์ „์—๋Š” ์ด์ƒํ•œ ๊ฐ’์ด๋˜ s2๊ฐ€, ๋ณต์‚ฌ ํ›„์—๋Š” s1์˜ Hello๋กœ ์ฑ„์›Œ์กŒ๋‹ค.

โš ๏ธ ์ฃผ์˜: char *s1์ฒ˜๋Ÿผ ํฌ์ธํ„ฐ๋กœ ์„ ์–ธ๋œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ์ฝ๊ธฐ ์ „์šฉ ๋ฐ์ดํ„ฐ ์˜์—ญ(๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ)์— ์ƒ์„ฑ๋˜์–ด ์“ฐ๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

1
2
3
char *s1 = "Hello";
char *s2 = "";
strcpy(s2, s1);   // โŒ s2๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ ์˜์—ญ โ†’ ๋ถˆ๊ฐ€๋Šฅ

4. strcat โ€” ๋ฌธ์ž์—ด ์ด์–ด๋ถ™์ด๊ธฐ

1
strcat(์ตœ์ข…๋ฌธ์ž์—ด, ๋ถ™์ผ๋ฌธ์ž์—ด);   // ์ตœ์ข…๋ฌธ์ž์—ด์˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜

str + cat(concatenation), ๋ฌธ์ž์—ด์— ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ๋ถ™์ธ๋‹ค. ๋„ ๋ฌธ์ž๋Š” ์ตœ์ข… ๋ฌธ์ž์—ด ๋์— ํ•œ ๋ฒˆ๋งŒ ํ•„์š”ํ•˜๋ฏ€๋กœ, ์ด์–ด๋ถ™์ผ ๋•Œ๋Š” ๋„ ์—†์ด ๋ฌธ์ž๋งŒ ์ด๋™ํ•œ๋‹ค.

Desktop View

strcat(s2, s1);์€ s2 ๋’ค์— s1์„ ์ด์–ด์“ด๋‹ค๋Š” ๋œป์ด๋‹ค.

Desktop View

์‹คํ–‰ํ•˜๋ฉด world๊ฐ€ Hello ๋’ค์— ๋ถ™๋Š”๋‹ค.


5. strchr โ€” ๋ฌธ์ž์—ด์—์„œ โ€˜๋ฌธ์žโ€™ ๊ฒ€์ƒ‰

1
2
strchr(๋Œ€์ƒ๋ฌธ์ž์—ด, ๊ฒ€์ƒ‰ํ• ๋ฌธ์ž);
// ์ฐพ์œผ๋ฉด ๊ทธ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ํฌ์ธํ„ฐ ๋ฐ˜ํ™˜, ์—†์œผ๋ฉด NULL

ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฐพ์€ ๋ฌธ์ž ์ดํ›„๋กœ๋„ ์ญ‰ ์ถœ๋ ฅ๋œ๋‹ค.

Desktop View

ptr = strchr(s1, 'a');๋Š” s1์—์„œ a๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด๋Š”๋‹ค. if(ptr) ์กฐ๊ฑด์€ โ€œ๋ชป ์ฐพ์œผ๋ฉด NULL(=0)โ€์ด๋ฏ€๋กœ ์ฐพ์•˜์„ ๋•Œ๋งŒ ์ฐธ์ด ๋œ๋‹ค. ์ด๋•Œ ptr - s1์„ ์ถœ๋ ฅํ•˜๋ฉด ๋ช‡ ๋ฒˆ์งธ์—์„œ ์ฐพ์•˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

Desktop View

์ด๋ฒˆ์—๋Š” while๋ฌธ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ptr์ด NULL์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋˜, ๋งค๋ฒˆ ptr + 1 ์œ„์น˜๋ถ€ํ„ฐ ๋‹ค์‹œ 'a'๋ฅผ ๊ฒ€์ƒ‰ํ•ด ๋ชจ๋“  โ€˜aโ€™์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.

Desktop View

a๋ฅผ ์ฐพ์€ ๊ณณ๋งˆ๋‹ค ์œ„์น˜์™€ ๊ทธ ์ดํ›„ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ–ˆ๋‹ค. ๋ณต์žกํ•ด ๋ณด์—ฌ๋„ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด ์žฌ๋ฏธ์žˆ๋‹ค.


6. strstr โ€” ๋ฌธ์ž์—ด์—์„œ โ€˜๋ฌธ์ž์—ดโ€™ ๊ฒ€์ƒ‰

1
2
strstr(๋Œ€์ƒ๋ฌธ์ž์—ด, ๊ฒ€์ƒ‰ํ• ๋ฌธ์ž์—ด);
// ์ฐพ์œผ๋ฉด ๊ทธ ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ํฌ์ธํ„ฐ ๋ฐ˜ํ™˜, ์—†์œผ๋ฉด NULL

Desktop View

strchr์ด โ€˜๋ฌธ์žโ€™ ํ•˜๋‚˜๋ฅผ ์ฐพ์•˜๋‹ค๋ฉด, strstr์€ โ€˜๋ฌธ์ž์—ดโ€™์„ ํ†ต์งธ๋กœ ์ฐพ๋Š”๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.


7. strupr / strlwr โ€” ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜

ํ•จ์ˆ˜๊ธฐ๋Šฅ
strupr(๋Œ€์ƒ)์ „๋ถ€ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
strlwr(๋Œ€์ƒ)์ „๋ถ€ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

Desktop View

Desktop View

โš ๏ธ ์ด ํ•จ์ˆ˜๋“ค์€ ์›๋ณธ ๋ฌธ์ž์—ด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๋’ค ์›๋ณธ์„ ํ™•์ธํ•˜๋ฉด ์ด๋ฏธ ๋ฐ”๋€Œ์–ด ์žˆ๋‹ค.


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
5
6
7
C ๋ฌธ์ž์—ด ํ•จ์ˆ˜ (string.h)
โ”œโ”€ ๊ธธ์ด    strlen  ('\0' ์ œ์™ธํ•œ ๋ฌธ์ž ๊ฐœ์ˆ˜)
โ”œโ”€ ๋น„๊ต    strcmp  (ASCII ๊ธฐ์ค€, -1 / 0 / 1)
โ”œโ”€ ๋ณต์‚ฌ    strcpy  (๋Œ€์ƒ โ† ์›๋ณธ)
โ”œโ”€ ๋ถ™์ด๊ธฐ  strcat  (๋Œ€์ƒ ๋’ค์— ์ด์–ด๋ถ™์ž„)
โ”œโ”€ ๊ฒ€์ƒ‰    strchr(๋ฌธ์ž) ยท strstr(๋ฌธ์ž์—ด)  โ†’ ํฌ์ธํ„ฐ ๋ฐ˜ํ™˜
โ””โ”€ ๋ณ€ํ™˜    strupr / strlwr  (์›๋ณธ์ด ๋ฐ”๋€œ! ์ฃผ์˜)

C์˜ ๋ฌธ์ž์—ด์€ ๊ฒฐ๊ตญ char[] ๋ฐฐ์—ด๊ณผ ๋„ ๋ฌธ์ž์˜ ์กฐํ•ฉ์ด๊ณ , ๊ฐ์ข… ์ฒ˜๋ฆฌ๋Š” string.h์˜ ํ•จ์ˆ˜๋“ค์ด ๋‹ด๋‹นํ•œ๋‹ค. ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์ (strchr, strstr)๊ณผ ์›๋ณธ์„ ๋ฐ”๊พผ๋‹ค๋Š” ์ (strupr, strlwr)๋งŒ ์ž˜ ๊ตฌ๋ถ„ํ•˜๋ฉด ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.