[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(๋ฌธ์๋ฐฐ์ด);
s1 ํฌ์ธํฐ์๋ "Hello"์ ์ฃผ์๋ฅผ, s2์๋ ๊ธธ์ด 10์ธ char ๋ฐฐ์ด์ ๋ฌธ์์ด์ ํ ๋นํ๋ค. ๋ฌธ์์ด ๋์๋ ๋ ๋ฌธ์๊ฐ ์์ผ๋, strlen์ ์ฐ๋ฉด 6์ด ๋์ฌ๊น?
5๊ฐ ๋์จ๋ค. strlen์ ๋ ๋ฌธ์('\0')๋ฅผ ์ ์ธํ ์์ ๋ฌธ์ ๊ฐ์๋ง ์ผ๋ค.
2. strcmp โ ๋ฌธ์์ด ๋น๊ต
1
strcmp(๋ฌธ์์ด1, ๋ฌธ์์ด2);
str + cmp(compare), ์ฆ ๋ ๋ฌธ์์ด์ ๋น๊ตํ๋ค. ๋น๊ต ๊ธฐ์ค์ ASCII ์ฝ๋๋ค. (์์ ์ a, A๋ฅผ ์ซ์๋ก ๋ํ๋๋ ๊ทธ ๊ณ ์ ๊ฐ)
| ๋ฐํ๊ฐ | ์๋ฏธ |
|---|---|
-1 | ASCII ๊ธฐ์ค ๋ฌธ์์ด2(s2)๊ฐ ํด ๋ |
0 | ๋ ๋ฌธ์์ด์ด ๊ฐ์ ๋ |
1 | ASCII ๊ธฐ์ค ๋ฌธ์์ด1(s1)์ด ํด ๋ |
s2์ Helloo์ฒ๋ผ ๋ฌธ์๊ฐ ํ๋ ๋ ๋ถ์ผ๋ฉด s2๊ฐ ๋ ํฌ๋ค.
-1์ด ์ถ๋ ฅ๋๊ณ , ์์ฑํ if๋ฌธ๋๋ก ๋ถ๊ธฐ๊ฐ ์ ๋์ํ๋ค.
3. strcpy โ ๋ฌธ์์ด ๋ณต์ฌ
1
strcpy(๋์๋ฌธ์์ด, ์๋ณธ๋ฌธ์์ด); // ๋์๋ฌธ์์ด์ ํฌ์ธํฐ๋ฅผ ๋ฐํ
s1์๋ Hello๋ฅผ ๋ฃ๊ณ , s2๋ ์ด๊ธฐํ ์์ด ์ ์ธ๋ง ํ๋ค(โ ์ฐ๋ ๊ธฐ๊ฐ). strcpy ์ ๊ณผ ํ๋ก ๋๋ s2๋ฅผ ์ถ๋ ฅํด ๋ณด์.
๋ณต์ฌ ์ ์๋ ์ด์ํ ๊ฐ์ด๋ s2๊ฐ, ๋ณต์ฌ ํ์๋ s1์ Hello๋ก ์ฑ์์ก๋ค.
โ ๏ธ ์ฃผ์:
char *s1์ฒ๋ผ ํฌ์ธํฐ๋ก ์ ์ธ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ ์์ญ(๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ)์ ์์ฑ๋์ด ์ฐ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
1 2 3 char *s1 = "Hello"; char *s2 = ""; strcpy(s2, s1); // โ s2๊ฐ ์ฝ๊ธฐ ์ ์ฉ ์์ญ โ ๋ถ๊ฐ๋ฅ
4. strcat โ ๋ฌธ์์ด ์ด์ด๋ถ์ด๊ธฐ
1
strcat(์ต์ข
๋ฌธ์์ด, ๋ถ์ผ๋ฌธ์์ด); // ์ต์ข
๋ฌธ์์ด์ ํฌ์ธํฐ๋ฅผ ๋ฐํ
str + cat(concatenation), ๋ฌธ์์ด์ ๋ค๋ฅธ ๋ฌธ์์ด์ ๋ถ์ธ๋ค. ๋ ๋ฌธ์๋ ์ต์ข
๋ฌธ์์ด ๋์ ํ ๋ฒ๋ง ํ์ํ๋ฏ๋ก, ์ด์ด๋ถ์ผ ๋๋ ๋ ์์ด ๋ฌธ์๋ง ์ด๋ํ๋ค.
strcat(s2, s1);์ s2 ๋ค์ s1์ ์ด์ด์ด๋ค๋ ๋ป์ด๋ค.
์คํํ๋ฉด world๊ฐ Hello ๋ค์ ๋ถ๋๋ค.
5. strchr โ ๋ฌธ์์ด์์ โ๋ฌธ์โ ๊ฒ์
1
2
strchr(๋์๋ฌธ์์ด, ๊ฒ์ํ ๋ฌธ์);
// ์ฐพ์ผ๋ฉด ๊ทธ ๋ฌธ์๋ก ์์ํ๋ ๋ฌธ์์ด์ ํฌ์ธํฐ ๋ฐํ, ์์ผ๋ฉด NULL
ํฌ์ธํฐ๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์, ์ฐพ์ ๋ฌธ์ ์ดํ๋ก๋ ์ญ ์ถ๋ ฅ๋๋ค.
ptr = strchr(s1, 'a');๋ s1์์ a๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ ์์น์ ์ฃผ์๋ฅผ ๋ด๋๋ค. if(ptr) ์กฐ๊ฑด์ โ๋ชป ์ฐพ์ผ๋ฉด NULL(=0)โ์ด๋ฏ๋ก ์ฐพ์์ ๋๋ง ์ฐธ์ด ๋๋ค. ์ด๋ ptr - s1์ ์ถ๋ ฅํ๋ฉด ๋ช ๋ฒ์งธ์์ ์ฐพ์๋์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๋ค.
์ด๋ฒ์๋ while๋ฌธ์ผ๋ก ๋ง๋ค์๋ค. ptr์ด NULL์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋, ๋งค๋ฒ ptr + 1 ์์น๋ถํฐ ๋ค์ 'a'๋ฅผ ๊ฒ์ํด ๋ชจ๋ โaโ์ ์์น๋ฅผ ์ฐพ๋๋ค.
a๋ฅผ ์ฐพ์ ๊ณณ๋ง๋ค ์์น์ ๊ทธ ์ดํ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค. ๋ณต์กํด ๋ณด์ฌ๋ ์๋ฆฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด ์ฌ๋ฏธ์๋ค.
6. strstr โ ๋ฌธ์์ด์์ โ๋ฌธ์์ดโ ๊ฒ์
1
2
strstr(๋์๋ฌธ์์ด, ๊ฒ์ํ ๋ฌธ์์ด);
// ์ฐพ์ผ๋ฉด ๊ทธ ๋ฌธ์์ด๋ก ์์ํ๋ ํฌ์ธํฐ ๋ฐํ, ์์ผ๋ฉด NULL
strchr์ด โ๋ฌธ์โ ํ๋๋ฅผ ์ฐพ์๋ค๋ฉด, strstr์ โ๋ฌธ์์ดโ์ ํต์งธ๋ก ์ฐพ๋๋ค๋ ์ฐจ์ด๊ฐ ์๋ค.
7. strupr / strlwr โ ๋์๋ฌธ์ ๋ณํ
| ํจ์ | ๊ธฐ๋ฅ |
|---|---|
strupr(๋์) | ์ ๋ถ ๋๋ฌธ์๋ก ๋ณํ |
strlwr(๋์) | ์ ๋ถ ์๋ฌธ์๋ก ๋ณํ |
โ ๏ธ ์ด ํจ์๋ค์ ์๋ณธ ๋ฌธ์์ด ์์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ค. ํจ์๋ฅผ ์ฌ์ฉํ ๋ค ์๋ณธ์ ํ์ธํ๋ฉด ์ด๋ฏธ ๋ฐ๋์ด ์๋ค.
๐ ์ ๋ฆฌ
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)๋ง ์ ๊ตฌ๋ถํ๋ฉด ํท๊ฐ๋ฆฌ์ง ์๋๋ค.














Comments powered by Disqus.