๋ฌธ์์ด(string) : ๋ฌธ์๋ค์ด ์ฌ๋ฌ ๊ฐ ๋ชจ์ธ ๊ฒ
๋ฌธ์์ด ๋ณ์๋?
-๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฌธ์์ด์ ์ ์ฅํ ์ ์๋ ๋ณ์๋ฅผ ๋งํ๋ค.
๋ฌธ์์ด ๋ณ์์ ํน์ง
(1) ํ๋์ ๋ฌธ์๋ charํ ๋ณ์๋ก ์ ์ฅ ex) H
(2) ๋ฌธ์์ด์ charํ ๋ฐฐ์ด๋ก ์ ์ฅ ex) HELLO\0
(3) NULL ๋ฌธ์๋ ๋ฌธ์์ด์ ๋์ ๋ํ๋ธ๋ค ex) \0
(4) ๋ฌธ์์ด์ ์ด๋์ ์ข ๋ฃ๋๋์ง ์ ์๊ฐ ์์ผ๋ฏ๋ก ํ์๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค.
ํ์ํ์ง ์์ผ๋ฉด ์ฐ๋ ๊ธฐ๊ฐ์ด ์๊ธธ ์ ์๋ค.
๋ฌธ์ ๋ฐฐ์ด์ ์ด๊ธฐํ
๋ณดํต, char str[4] = "abc"; ์ด๋ฐ ํํ๋ก ๋ง์ด ์ด๋ค.
๋ฌธ์์ด์ ์ถ๋ ฅ
char str[] = "abc";
printf("%s", str);
//abc๋ก ์ถ๋ ฅ๋๋ค.
์์
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[6] = "Seoul"; // "Seoul"
char str2[3] = {'i' , 's' , '\0'}; // "is"
char str3[25] = "the capital city of Korea.";
printf("%s %s%s\r", str1, str2, str3); // ๋ชจ๋ ๋ฌธ์์ด์ ํฉ์ณ์ ์ถ๋ ฅ
return 0;
//Seoul is the capital city of Korea.
}
๋ฌธ์์ด์ copyํ๋ ์์
#include <stdio.h>
int main(void)
{
char src[] = "The worst things to eat before you sleep"; // ์๋ณธ ๋ฌธ์์ด
char dst[100]; // ๋ณต์ฌ๋ ๋ฌธ์์ด์ ์ ์ฅํ ๋ฐฐ์ด
int i;
printf("์๋ณธ ๋ฌธ์์ด=%s\n", src); // ์๋ณธ ๋ฌธ์์ด ์ถ๋ ฅ
// src ๋ฌธ์์ด์ dst๋ก ๋ณต์ฌ
for (i = 0; src[i] != '\0'; i++) {
dst[i] = src[i];
}
dst[i] = '\0'; // ๋ง์ง๋ง์ NULL ๋ฌธ์ ์ถ๊ฐ
printf("๋ณต์ฌ๋ ๋ฌธ์์ด=%s\n", dst); // ๋ณต์ฌ๋ ๋ฌธ์์ด ์ถ๋ ฅ
return 0;
}
๋ฌธ์์ด ๊ธธ์ด ๊ณ์ฐ ์์
#include <stdio.h>
int main(void) {
char str[30] = "C language is easy"; // ์๋ณธ ๋ฌธ์์ด
int i = 0; // ์ธ๋ฑ์ค ๋ณ์
// ๋ฌธ์์ด์ ๋์ ๋ํ๋ด๋ NULL ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ๋ฐ๋ณต
while (str[i] != '\0') {
i++; // ์ธ๋ฑ์ค๋ฅผ ์ฆ๊ฐ
}
printf("๋ฌธ์์ด\"%s"\์ ๊ธธ์ด๋ %d์
๋๋ค.\n", str, i);
return 0;
// ๋ฌธ์์ด "C language is easy"์ ๊ธธ์ด๋ 18์
๋๋ค.
}
๋ฉ๋ชจ๋ฆฌ ์ธ๊ทธ๋จผํธ
- ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, ๋ฉ๋ชจ๋ฆฌ๋ ์ฌ๋ฌ ์ธ๊ทธ๋จผํธ๋ก ๋๋ ์ง๋ค.
- ํ
์คํธ ์ธ๊ทธ๋จผํธ (Text Segment):
- ํ๋ก๊ทธ๋จ์ ์คํ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์ด ์์ญ์ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๊ธฐ ์ ์ฉ
- ์์ ๋ฌธ์์ด์ด๋ ์์ ๋ฐ์ดํฐ๋ ์ด ์์ญ์ ํฌํจ๋ ์ ์๋ค.
- ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ (Data Segment):
- ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๊ฐ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์ด๊ธฐํ๋ ๋ฐ์ดํฐ์ ์ด๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ๋ก ๋๋ ์ ์๋ค.
- ์ด ์์ญ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ชจ๋ ๊ฐ๋ฅ
- ์ด๊ธฐํ๋ ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๋ ์ด๊ธฐํ๋ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ์ ์ฅ๋๊ณ , ์ด๊ธฐํ๋์ง ์์ ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๋ BSS(Block Started by Symbol) ์ธ๊ทธ๋จผํธ์ ์ ์ฅ๋จ
- ํ (Heap):
- ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- malloc, calloc, realloc ๋ฑ์ ํจ์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ์ ์๋ค.
- ์ด ์์ญ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ชจ๋ ๊ฐ๋ฅ
- ์คํ (Stack):
- ํจ์ ํธ์ถ ์ ์ง์ญ ๋ณ์์ ๋งค๊ฐ๋ณ์๊ฐ ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ์คํ ํ๋ ์์ด ์ถ๊ฐ๋๊ณ , ํจ์๊ฐ ๋ฐํ๋ ๋ ํด๋น ์คํ ํ๋ ์์ด ์ ๊ฑฐ๋จ
- ์ด ์์ญ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ชจ๋ ๊ฐ๋ฅ
๋ฌธ์์ด ์์
char *p = "HelloWorld";
- ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ(๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ)
- ํ ์คํธ ์ธ๊ทธ๋จผํธ(๊ฐ์ ์ฝ๊ธฐ๋ง ํ๊ณ ๋ณ๊ฒฝํ ์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ)
์์
#include <stdio.h>
int main(void)
{
char *p = "HelloWorld";
printf("%s /n", p);
p = "Welcome to C World!"; //๊ฐ๋ฅ
printf("%s /n", p);
p = "Goodbye"; // p ์์ฒด๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ๊ฐ๋ฅ
printf("%s /n", p);
// p์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค
// p[0] = 'a'
// aoobye๋ก ๋ฐ๋์ง ์๊ณ , ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๋ค๋ฅธ ์์ญ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ด๋ค
return 0;
}
ํ๋์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์
gets_s() : int getchar(void)
ํ๋์ ๋ฌธ์๋ฅผ ์ฝ์ด์ ๋ฐํ
์ฌ์ฉ ์: int c = getchar();
ํ์ค ์ ๋ ฅ(ํค๋ณด๋)์์ ํ๋์ ๋ฌธ์๋ฅผ ์ฝ์ด์จ๋ค
๋ฌธ์์ด ํจ์์ด์ง๋ง int์์ ์ฃผ์ํ๋ค
char buf[100];
gets_s(buf, 100); //ํดํน ์ํ์ฑ์ผ๋ก ์ธํด ์ฌ์ด์ฆ๋ฅผ ์
๋ ฅํ๋๋ก gets_s ์ธ๋๋ฐ s๊ฐ ์๊น
puts(buf);
puts() : void putchar(int c)
๋ณ์ c์ ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅ
์ฌ์ฉ ์: putchar(c);
ํ๋์ ๋ฌธ์๋ฅผ ํ์ค ์ถ๋ ฅ(ํ๋ฉด)์ ์ถ๋ ฅ
int _getch(void)
ํ๋์ ๋ฌธ์๋ฅผ ์ฝ์ด์ ๋ฐํ(๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์์)
์ฌ์ฉ ์: int c = _getch();
์ฃผ๋ก ํค ์ ๋ ฅ์ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ
๋ฌธ์์ด ํจ์์ด์ง๋ง int์์ ์ฃผ์ํ๋ค
void _putch(int c)
๋ณ์ c์ ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅ(๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์์)
์ฌ์ฉ ์: _putch(c);
์ฝ์์ ๋ฌธ์๋ฅผ ๋ฒํผ๋ง ์์ด ์ฆ์ ์ถ๋ ฅ
์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ํจ์
int scanf("%c", &c)
์ฌ์ฉ ์: char c; scanf("%c", &c);
ํ์ค ์ ๋ ฅ์์ ํ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
%c ํฌ๋งท์ ์ฌ์ฉํ๋ฉด ํ๋์ ๋ฌธ์๋ฅผ ์ฝ๋๋ค
ํ์ง๋ง ๋ค์ํ ํ์์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๋ฅผ ์ฝ์ด์ฌ ์๋ ์๋ค.
int printf("%c", c)
๋ณ์ c์ ์ ์ฅ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅ
์ฌ์ฉ ์: char c = 'A'; printf("%c", c);
ํ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ค ์ถ๋ ฅ์ ์ถ๋ ฅ
%c ํฌ๋งท์ ์ฌ์ฉ์, ํ๋์ ๋ฌธ์๋ฅผ ์ถ๋ ฅ
ํ์ง๋ง printf ํจ์๋ ๋ค์ํ ํ์์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ ์๋ ์๋ค.
๋ฒํผ๋ง(Buffering):
๋ฒํผ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ผ์ ํฌ๊ธฐ๋งํผ ๋ชจ์๋๊ณ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
ํ์ค ์ ์ถ๋ ฅ ํจ์๋ค์ ์ผ๋ฐ์ ์ผ๋ก ๋ฒํผ๋ง์ ์ฌ์ฉํ์ฌ ํจ์จ์ฑ์ ๋์ธ๋ค.
์ํฐํค(\n)๊ฐ ์ ๋ ฅ๋๋ฉด ๋ชจ๋ ๋ฒํผ๋ก ์จ ๋ฌธ์๋ค์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ๋ค.
=> ๊ทธ๋ฌ๋ฏ๋ก ์ํฐํค๋ฅผ ์ณ์ผ๋ง ์ ๋ ฅ์ ๋ฐ๋ ํ๋ก๊ทธ๋จ๋ค์ด ๋ง๋ค : ๋ฒํผ๋ฅผ ์ฐ๋ ๊ฒ๋ค.
_getch์ _putch ํจ์๋ ๋ฒํผ๋ง์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ ๋๋ ์ถ๋ ฅ์ด ์ฆ์ ์ฒ๋ฆฌ๋๋ค. ์ด ํจ์๋ค์ ์ฃผ๋ก ์ค์๊ฐ ์ ๋ ฅ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค : ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ๋ก๊ทธ๋จ๋ค
'C Programming Language > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C์ธ์ด ๊ตฌ์กฐ์ฒด์ ๋ณ์, ๋ฐฐ์ด , ํฌ์ธํฐ, ํจ์ (0) | 2024.08.02 |
---|---|
C์ธ์ด ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ (0) | 2024.07.11 |
C์ธ์ด ํฌ์ธํฐ(pointer)์ ๊ฐ๋ ํ์ตํ๊ธฐ (0) | 2024.07.02 |
C์ธ์ด ์ ๋ ฌ๊ณผ ํ๋ ฌ์ ๋ํด ํ์ตํ๊ธฐ (0) | 2024.07.01 |
C์ธ์ด ๋ฐฐ์ด์ ๋ํด ํ์ตํ๊ธฐ (0) | 2024.06.19 |