| ๋ฆฌํฐ๋ด ( literal ) | ์์ค ์ฝ๋ ์์์ ๊ณ ์ ๋ ๊ฐ์ ๊ฐ์ง๋ ๊ฒ
* ํนํ C์ธ์ด์ ๊ฒฝ์ฐ ํฐ๋ฐ์ดํ(")๋ก ๋ฌถ์ธ ๊ฒ๋ค์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด(string literal)์ด๋ผ ํจ.
- ์ปดํจํฐ๋ ๋ฆฌํฐ๋ด์ ๋ฐ๋ก ๋ณด๊ด(๋ฆฌํฐ๋ด๋ค์ ๋ณด๊ดํ๋ ๊ณต๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ๋ก ์๊น - ํ
์คํธ ์ธ๊ทธ๋จผํธ์ ์์)
- ๋ฆฌํฐ๋ด์ด ๋ณด๊ด๋๋ ๊ณณ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ ๊ณณ์, ์ฐ๊ธฐ๋ฅผ ์๋ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๊ฐ์ ๋ก ์ข
๋ฃ๋จ.
#include <stdio.h>
int main() {
char str[] = "hello"; //str[]์ ์คํ(์์ ๊ฐ๋ฅ ํ) ๊ณณ์ ์์. ๋ฆฌํฐ๋ด์ด ์๋.
char *pstr = "goodbye"; // ๋ฆฌํฐ๋ด
str[1] = 'a';
pstr[1] = 'a';
return 0;
}
(โป VS 2017 ์ด์์์๋ char*๋ก ๋ฆฌํฐ๋ด์ ๊ฐ๋ฆฌํฌ์ ์์. const char*๋ก๋ง ๊ฐ๋ฅํจ.)
| ๋ฌธ์์ด ๋ค์ ๊ฐ์ง๊ณ ๋๊ธฐ |
- C์ธ์ด์์ ๋ฌธ์์ด(๋ฐฐ์ด)์ ์ด๋ฆ์ ์ฃผ์๊ฐ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฃจ๊ธฐ ๋ถํธํ ํธ์
โ ๋ฌธ์์ด์ ์์ ๋กญ๊ฒ ๋ค๋ฃจ๊ธฐ์ํ ํจ์ ๊ตฌํ์ด ํ์ํจ.
๋๋ณด๊ธฐ
โปํจ์๋ฅผ ๋ง๋ค๊ธฐ ์ ๊ณ ๋ คํด์ผ ํ๋ ์ฌํญ๋คโป
1. ์ด ํจ์๋ ๋ฌด์จ ์์
์ ํ๋๊ฐ?(์์ธํ ์๋ก ์ข์)
2. ํจ์์ ๋ฆฌํดํ์ด ๋ฌด์์ด๋ฉด ์ข์๊น?
3. ํจ์์ ์ธ์๋ก๋ ๋ฌด์์ ๋ฐ์์ผ ํ๋๊ฐ?
[ ๋ฌธ์์ด ๋ด์ ์ด ๋ฌธ์์ ์๋ฅผ ์ธ๋ ํจ์]
[ ๋ฌธ์์ด์ ๋ณต์ฌํ๋ ํจ์]
1. a ๋ฌธ์์ด์ ๋ชจ๋ ๋ด์ฉ์ b ๋ฌธ์์ด๋ก ๋ณต์ฌํ๋ ํจ์
2. ex) ์ฑ๊ณตํ๋ฉด 1๋ฆฌํด ๋ฐ์ => int
3. ๋๊ฐ์ ๋ฌธ์์ด์ ์ธ์๋ก ๋ฐ์. ๋ฌธ์์ด์ char ํ ๋ฐฐ์ด์ด๋ฏ๋ก char* 2๊ฐ๋ฅผ ์ธ์๋ก ๋ฐ์
#include <stdio.h>
int copy_str(char *str_a, char *str_b);
int main () {
char str1[] = "hello";
char str2[] = "hi";
printf("๋ณต์ฌ ์ด์ : %s \n", str1);
copy_str(str1, str2);
printf("๋ณต์ฌ ์ดํ : %s \n", str1);
return 0;
}
int copy_str(char *str_a, char *str_b) {
while(*str_b) { //str_b๊ฐ 0(NULL)์ ๋๋ฌํ ๋๊น์ง ๊ณ์
*str_a = *str_b; //str_b์ ๋ด์ฉ์ str_a์ ๋ณต์ฌ
str_b++; // ๊ทธ ๋ค์ ๋ฌธ์ ๊ฐ๋ฆฌํด
str_a++;
}
*str_a = '\0'; //NULL ์ฝ์
return 1;
}
โ> ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ์ง ์์์ ํ๋ฝ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์นจ๋ฒํ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์์.
[ ๋ฌธ์์ด์ ํฉ์น๋(๋ํ๋) ํจ์]
#include <stdio.h>
int str_add(char *str1, char *str2);
int main() {
char str1[100] = "hello my name is ";
char str2[] = "May";
str_add(str1, str2);
printf("%s", str1);
return 0;
}
/* str1 ์ str2 ๋ฌธ์์ด์ ๋์ ๋ถ์ธ๋ค.
์ด ๋ str1 ๋ฌธ์์ด์ ํฌ๊ธฐ๋ฅผ ๊ฒ์ฌํ์ง ์์ผ๋ฏ๋ก str2 ๊ฐ ๋ค์ด๊ฐ ์ ์๋ ์ถฉ๋ถํ ํฌ๊ธฐ๊ฐ
์์ด์ผ ํ๋ค.*/
int str_add(char *str1, char *str2) {
//str1์ ๋๋ถ๋ถ ์ฐพ๊ธฐ
while(*str1) {
str1++;
}
while(*str2) {
*str1 = *str2;
str1++;
str2++;
}
//๋ง์ง๋ง์ผ๋ก str1์ NULL ์ถ๊ฐ(str1 ์์ NULL ์ด ์ถ๊ฐ ๋์ง ์์๊ธฐ ๋๋ฌธ) */
*str1 = '\0';
return 1;
}
[ ๋ฌธ์์ด์ ๋น๊ตํ๋ ํจ์]