TIL_21.01.26 ๐๐ฝโโ๏ธ๐๐ฝโโ๏ธ
CS50
C์๋ ์ฌ๋ฌ ์๋ฃํ์ด ์๊ณ ๊ฐ๊ฐ์ ์๋ฃํ์ ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ค. char ํ์ ์ ๋ณ์๋ฅผ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ํ ์ฌ๊ฐํ ์์ ๊ทธ ๋ณ์์ ๊ฐ์ด ์ ์ฅ๋๋ค.
Array
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int score1 = 72;
int score2 = 73;
int score3 = 33;
printf("Average: %i\n", (score1 + score2 + score3)/3);
}
์ธ ๊ฐ์ ์ ์๋ฅผ ์ ์ฅํ๊ณ ํ๊ท ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
ํ์ง๋ง ์ด ์ฝ๋๊ฐ ์ต์ ์ ๋์์ธ์ด ์๋๋ค. ๊ทธ ์ด์ ๋ ์ ์๊ฐ 3๊ฐ์ง๋ก ๊ณ ์ ์ ์ด๊ณ ์์์ ์ ๋ํ ๋์๋ ์๋ค. ๋ฐ๋ณต์ ์ธ ์์
์ด ๋์ ๋ณด์ธ๋ค.
๋ฐ๋ผ์ ๊ฐ์ ์ ์ฌ์ง๊ฐ ์๋ ํ๋ก๊ทธ๋จ์ธ ๊ฒ์ด๋ค.
์ผ๋จ ์ ์์ ๊ฐ์๊ฐ ๋ ๋ง์์ง๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ๋ฐฐ์ด์ด๋ค.
๋ฐฐ์ด์ ๋์ผํ ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐ์ด์ด์ ์ ์ฅํ๊ณ ์ด๋ฅผ ํ๋์ ๋ณ์๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int scores[3]; // ํฌํค๊ฐ 3์ธ ๋ฐฐ์ด์ ๋ง๋ค๊ณ
scores[0] = 72; // ํด๋น index์ ๊ฐ์ ํ ๋น
scores[1] = 73;
scores[2] = 33;
printf("Average: %i\n", (scores[0] + scores[1] + scores[2])/3);
}
ํ์ง๋ง ์ด ์ฝ๋์์๋ ์ ์์ ๊ฐ์๊ฐ ๊ณ ์ ๋๋ค๋ ๋ฌธ์ ์ ์ด ์ฌ์ ํ ์กด์ฌํ๋ค.
๋ ์ ์๊ฐ ์
๋ ฅ์ ๋ฐ๋๊ฒ ์๋ ์ฝ๋ ๋ด๋ถ์ ์ด๋ฏธ ์ง์ ์ด ๋์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๊ฐ๋ฅํ ๋ฐ๋ณต๋ค๋ ์ฌ์ ํ ์กด์ฌํ๋ค.
#include <stdio.h>
#include <cs50.h>
float average (int length, int array[]);
int main(void)
{
int n = get_int("Number of scores: ");
int scores[n];
for (int i = 0; i < n; i++)
{
scores[i] = get_int("Score %i: ", i + 1);
}
printf("Average: %.1f\n", average(n, scores));
}
float average (int length, int array[])
{
int sum =0;
for (int i = 0; i < length; i++)
{
sum += array[i];
}
return (float) sum / (float) length;
}
์ ์์ ๊ฐ์๋ฅผ ์
๋ ฅ ๋ฐ๊ณ ๊ทธ ๊ฐ์ ์ด์ฉํด n๊ฐ
์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์ ๋ง๋ค๊ณ
n๋ฒ
์ ์ ์
๋ ฅ์ ๋ฐ๋๋ค. ๋ average
ํจ์๋ฅผ ๋ง๋ค์ด์ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ฐฐ์ด์ ์ธ์๊ฐ์ผ๋ก ์ ๋ฌํด ํ๊ท ๊ฐ์ ๊ตฌํด์ค๊ฑธ ์ถ๋ ฅํ๋ค.
๋ฌธ์์ด๊ณผ ๋ฐฐ์ด
string์ char ์๋ฃํ์ ๋ฐ์ดํฐ๋ค์ ๋ฐฐ์ด์ด๋ค.
string = "HI!";
๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ์ฅ๋๋ค.
๋ฌธ์์ด์ ๋ฐ๋ก ๊ธธ์ด๋ฅผ ์ง์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ปดํจํฐ๊ฐ ๋ฌธ์์ด์ด ์ข ๋ฃ๋๋ ์ง์ ์ ์๊ธฐ์ํด์ ๋ฌธ์์ด์ ๋์ ํญ์ null ์ข ๋จ ๋ฌธ์ \0์ด ๋ค์ด๊ฐ๋ค.
string names[4];
names[0] = "EMMA";
names[1] = "RODRIGO";
names[2] = "BRIAN";
names[3] = "DAVID";
printf("%s\n", names[0]);
printf("%c%c%c%c\n", names[0][0], names[0][1], names[0][2], names[0][3]);
์ด๋ฌํ ์ฝ๋๊ฐ ์๋ค๋ฉด ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์๋ ์๋์ ๊ฐ์ด ์ ์ฅ๋๋ค.
๋ฌธ์์ด์ ํ์ฉ
๋ฌธ์์ด ๊ธธ์ด ํ์
๋ฌธ์์ด ๊ธธ์ด ํ์ํ๋ ๋ฐฉ๋ฒ์ ์ฒซ๋ฒ์งธ๋ก ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด ๋ฌธ์์ด์ ์ํํ๋ฉฐ \0
๊ณผ ์ผ์นํ๋์ง ๊ฒ์ฌํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง strlen
ํจ์๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ์ป์ ์ ์๋ค.
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
string s = get_string("input: ");
printf("Output:\n");
for (int i =0, n = strlen(s); i < n; i++)
{
printf("%c\n",s[i]);
}
}
๋ฌธ์์ด ํ์ ๋ฐ ์์
์
๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค.
์์คํค ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด ๋ณ๊ฒฝํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
string s = get_string("Before: ");
printf("After: ");
for (int i = 0, n = strlen(s); i < n; i++)
{
if (s[i] >= 'a' && s[i] <= 'z')
{
printf("%c", s[i] - 32);
}
else
{
printf("%c", s[i]);
}
}
printf("\n");
}
๋ ctype
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ toupper
ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
string s = get_string("Before: ");
printf("After: ");
for (int i = 0, n = strlen(s); i < n; i++)
{
printf("%c", toupper(s[i]));
}
printf("\n");
}
CS50 Manual Pages ๋ฅผ ์ฐธ์กฐํด์ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๋ฅผ ํ์ธํ ์ ์๋ค.
๋ช ๋ นํ ์ธ์
์ปดํ์ผ ํ ์ ์ฅํ๊ณ ์ ํ๋ ํ์ผ๋ช
๊ณผ ๊ฐ์ด ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ํจ๊ป ์ค ์ ์๋ค.
์ด๋ฌํ ์ ๋ณด๋ฅผ ๋ช
๋ นํ ์ธ์๋ผ๊ณ ํ๋ค.
#include <cs50.h>
#include <stdio.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
printf("hello, %s\n", argv[1]);
}
else
{
printf("hello, world\n");
}
}
์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์ argc
๋ main
ํจ์๊ฐ ๋ฐ๊ฒ ๋ ์
๋ ฅ์ ๊ฐ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ argv[]
๋ ๊ทธ ์
๋ ฅ์ด ํฌํจ๋์ด ์๋ ๋ฐฐ์ด์ด๋ค. argv[0]
์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก๊ทธ๋จ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋๋ค.
์๋ฅผ ๋ค์ด ์ ํ๋ก๊ทธ๋จ์ arg.c
๋ก ์ ์ฅํ๊ณ ์ปดํ์ผ ํ ํ์ ./argc Kim
์ผ๋ก ์คํํ๋ฉด hello, Kim
์ ๊ฐ์ด ์ถ๋ ฅ์ด ๋๋ค.
argc == 2, argv[1] == Kim
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(TIL_21.01.26 ๐๐ฝโโ๏ธ๐๐ฝโโ๏ธ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@kdo0129/TIL21.01.26์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค