ํฐ์คํ ๋ฆฌ ๋ทฐ
๐charํ ๋ฐฐ์ด์ ๋ฌธ์์ด ์ ์ฅ๊ณผ '๋(null)' ๋ฌธ์
๋ฌธ์์ด์ ์ ์ฅ์ ๋ชฉ์ ์ผ๋ก charํ ๋ฐฐ์ด์ ์ ์ธํ ๊ฒฝ์ฐ์๋ ํน์๋ฌธ์ '\0' ์ด ์ ์ฅ๋ ๊ณต๊ฐ๊น์ง ๊ณ ๋ คํด์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค. ๋ฌธ์์ด์ ๋์ ์๋์ผ๋ก ์ฝ์ ๋๋ ๋ฌธ์ '\0'์ ๊ฐ๋ฅด์ผ '๋(null)' ๋ฌธ์๋ผ ํ๋ค.
์ด๋ ๋ ๋ฌธ์์ ์์คํค ์ฝ๋ ๊ฐ์ 0์ด์ง๋ง ์ด๋ฅผ ๋ฌธ์์ ํํ๋ก ์ถ๋ ฅํ ๊ฒฝ์ฐ, ์๋ฌด๋ฐ ์ถ๋ ฅ์ด ๋ฐ์ํ์ง ์๋๋ค.
scanf ํจ์๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ๋ ์์ ๋ฅผ ์ดํด๋ณด์
#include <stdio.h>
int main()
{
char str[50];
int idx = 0;
printf("๋ฌธ์์ด ์
๋ ฅ: ");
scanf("%s", str); //๋ฌธ์์ด์ ์
๋ ฅ ๋ฐ์์ ๋ฐฐ์ด str์ ์ ์ฅ
printf("์
๋ ฅ ๋ฐ์ ๋ฌธ์์ด: %s \n", str);
printf("๋ฌธ์ ๋จ์ ์ถ๋ ฅ: ");
while (str[idx] != '\0') //null์ด ์๋๋ฉด ๋ฌธ์ ๋จ์๋ฅผ ์ถ๋ ฅํ๋ผ
{
printf("%c", str[idx]);
idx++;
}
printf("\n");
}
RESULT:
๋จผ์ 9ํ์ ๋ชจ์ต์ ๋ณด๋ฉด scanf ํจ์์ & ์ฐ์ฐ์๊ฐ ์๋ถ์ด ์๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
scanf("%s", str);
scanf ํจ์ ํธ์ถ๋ฌธ ๊ตฌ์ฑ ์, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ณ์์ ์ด๋ฆ ์์๋ &๋ฅผ ๋ถ์ฌ์ฃผ์ด์ผ ํ์ง๋ง ๋ฌธ์์ด์ ์ ๋ ฅ ๋ฐ๋ ๋ฐฐ์ด์ ์ด๋ฆ ์์๋ & ์ฐ์ฐ์๋ฅผ ๋ถ์ด์ง ์๋๋ค.
๋ ์ ์์ ์ ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ ์ถ๋ ฅ์ ์์ํด์ ๋ ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅ์ ์งํํ๊ณ ์๋ค. ์คํ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ์ ๋ ฅ ๋ฐ์ ๋ฌธ์์ด์ด ๋ฐ๋ณต๋ฌธ์ ํตํด ์ ์์ ์ผ๋ก, ๊ทธ๋๋ก ์ถ๋ ฅ๋จ์ ์ ์ ์๋ค.
์ฆ, scanf ํจ์ํธ์ถ์ ํตํด์ ์ ๋ ฅ ๋ฐ์ ๋ฌธ์์ด์ ๋์๋ ๋ ๋ฌธ์๊ฐ ์ฝ์ ๋ ๊ฒ์ด๋ค.
๋ ๋ฌธ์๋ก ์ธํด ๋ฌธ์์ด์ ๋์ ํ์ํ ์ ์๋ค.
๐ถ ์์ 1)
ํ๋ก๊ทธ๋จ ์ฌ์ฉ์๋ก๋ถํฐ ํ๋์ ์๋จ์ด๋ฅผ ์ ๋ ฅ ๋ฐ์์ ์ ๋ ฅ ๋ฐ์ ์๋จ์ด์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํด๋ณด์. ์๋ฅผ ๋ค์ด์ 'Array'๋ผ๋ ๋จ์ด๊ฐ ์ ๋ ฅ๋๋ฉด 5๊ฐ ์ถ๋ ฅ๋์ด์ผ ํ๋ค.
๐คฆโ๏ธ ์๊ฐ ๊ณผ์
1. scanf ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๋ก๋ถํฐ ํ๋์ ์๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ์์ผ๊ฒ ๋ค
2. ์๋จ์ด์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ์ฌ์ผ ํ๋๋ฐ ๋ฌธ์์ด์ ๋์๋ null ๋ฌธ์๊ฐ ์ฝ์ ๋์์ผ๋ null ๋ฌธ์๊ฐ ๋์ค๊ธฐ ์ ๊น์ง ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ์ฌ i++ ๋ฅผ ํ์ฌ ์ต์ข ์ ์ผ๋ก i์ ์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๊ฒ ๋ค
๋ด๊ฐ ์๊ฐํ ๋ต
#include <stdio.h>
int main()
{
char str[50];
int i = 0;
int num = 0;
printf("ํ๋์ ์๋จ์ด๋ฅผ ์
๋ ฅํ์์ค: ");
scanf("%s", str);
while (str[i] != '\0')
{
i++;
}
printf("%d", i);
}
RESULT:
๋ต์:
#include <stdio.h>
int main()
{
char voca[100];
int len = 0;
printf("์๋จ์ด ์
๋ ฅ: ");
scanf("%s", voca);
while (voca[len] != 0)
len++;
printf("์
๋ ฅํ ์๋จ์ด์ ๊ธธ์ด๋ %d \n", len);
return 0;
}
๐ถ ์์ 2)
ํ๋ก๊ทธ๋จ ์ฌ์ฉ์๋ก๋ถํฐ ์๋จ์ด๋ฅผ ์ ๋ ฅ ๋ฐ์์ charํ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๊ทธ ๋ค์ ๋ฐฐ์ด์ ์ ์ฅ๋ ์๋จ์ด๋ฅผ ์ญ์์ผ๋ก ๋ค์ง๋๋ค. ๋ฌผ๋ก ์ด ๋์ ๋ ๋ฌธ์์ ์์น๋ฅผ ๋ณ๊ฒฝํด์๋ ์ ๋๋ค. ๋ค์ง๊ณ ๋์๋ ์ ๋๋ก ๋ค์งํ์ก๋์ง ํ์ธํ๊ธฐ ์ํด์ ์ถ๋ ฅํด๋ณด์.
๐คฆโ๏ธ ์๊ฐ ๊ณผ์
1. scanfํ ํจ์๋ฅผ ์ด์ฉํด์ ์ฌ์ฉ์๋ก๋ถํฐ ๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ์
2. ์ ๋ ฅ๋ฐ์ ๋จ์ด๋ฅผ charํ ๋ฐฐ์ด์ ์ ์ฅํด์ผํ๋ ๋ฏธ๋ฆฌ charํ ๋ฐฐ์ด์ ๋ง๋ค์ด๋ฌ์ผ๊ฐฐ๋ค.
3. while๋ฌธ์ ์ด์ฉํด์ ๊ธ์์๋ฅผ ์ธ๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ์ฌ i-- ๋ฅผ ํด ์ญ์์ผ๋ก ์ถ๋ ฅ๋๊ฒ๋ ํ๋ค.
๋ด๊ฐ ์๊ฐํ ๋ต
#include <stdio.h>
int main()
{
int i = 0;
char str[100];
printf("์๋จ์ด๋ฅผ ์
๋ ฅํ์์ค: ");
scanf("%s", str);
while (str[i] != '\0')
i++;
while (i != 0)
{
printf("%c", str[i]);
i--;
}
return 0;
}
RESULT:
๋ต์:
#include <stdio.h>
int main()
{
char voca[100];
int len = 0, i;
char temp;
printf("์๋จ์ด ์
๋ ฅ: ");
scanf("%s", voca);
while (voca[len] != '\0') //์๋จ์ด์ ๊ธธ์ด ๊ณ์ฐ
len++;
for (i = 0; i < len / 2; i++) //์๋จ์ด ๋ค์ง๊ธฐ
{
temp = voca[i]; //์์ ๋ฌธ์ ์์๋ก ์ ์ฅ
voca[i] = voca[(len - i) - 1]; //๋ค์ ๋ฌธ์๋ฅผ ์์ผ๋ก
voca[(len - i) - 1] = temp; //์์ ๋ฌธ์๋ฅผ ๋ค๋ก
}
printf("๋ค์งํ ์๋จ์ด: %s \n", voca);
return 0;
}
์ ์์ ์์ ๋ณด์ธ ์๋จ์ด๋ฅผ ๋ค์ง๋ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1๋จ๊ณ: ๋งจ ์์ ๋ฌธ์์ ๋งจ ๋ค์ ๋ฌธ์๋ฅผ ๋ฐ๊พผ๋ค.
2๋จ๊ณ: ์์์ ๋ ๋ฒ์งธ ๋ฌธ์์ ๋ค์์ ๋๋ฒ์งธ ๋ฌธ์๋ฅผ ๋ฐ๊พผ๋ค.
โ ๋ณด์ถฉํ ๋ถ๋ถ
1. ๋จ์ด๋ฅผ ๋ค์ง๋ ์๋ก์ด ๋ฐฉ์์ ์ตํ๋๋๊ฒ ์ข๊ฒ ๋ค.
'์ธ์ด > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C์ธ์ด] call-by-value VS call-by-reference (0) | 2023.02.17 |
---|---|
[C์ธ์ด] ํฌ์ธํฐ์ ๋ฐฐ์ด (1) (0) | 2023.02.16 |
[C์ธ์ด] 1์ฐจ์ ๋ฐฐ์ด (0) | 2023.02.12 |
[C์ธ์ด] ์กฐ๊ฑด๋ฌธ (0) | 2023.02.03 |
[C์ธ์ด] ๋ฐ๋ณต๋ฌธ _ Nested While ๋ฌธ (while๋ฌธ์ ์ค์ฒฉ) (0) | 2023.01.18 |