// numbers.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int numbers[6] = {4, 8, 15, 16, 23, 42};
for (int i = 0; i < 6; i++)
{
if (numbers[i] == 50)
{
printf("Found\n");
}
}
printf("Not found\n");
}
결과는 배열에 50이 없기 때문에 Not found로 잘 나온다. C에서는 JS와 다르게 배열을 중괄호를 사용하여 표시한다. int numbers[6] = {4, 8, 15, 16, 23, 42};
는 숫자 6개의 배열을 선언 및 정적으로 초기화한다.
// names.c
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
string names[4] = {"EMMA", "RODRIGO", "BRIAN", "DAVID"};
for (int i = 0; i < 4; i++)
{
if (strcmp(names[i], "EMMA") == 0)
{
printf("Found\n");
return 0;
}
}
printf("Not found\n");
return 1;
}
for 문 안에 있는 조건문의 경우, names[i] == "EMMA"
를 사용하면 될 것 같지만, C에서는 ==를 문자열에서 사용할 수 없으므로 strcmp 함수
를 써줘야 한다. strcmp 함수
는 string compare이라는 의미의 함수이고 문자열이 같으면 0을 반환한다.
#include <cs50.h>
#include <stdio.h>
#include <string.h>
typedef struct
{
string name;
string number;
}
person;
int main(void)
{
// person은 자료형, people은 배열의 이름이다.
person people[4];
people[0].name = "EMMA";
people[0].number = "617-555-0100";
people[1].name = "RODRIGO";
people[1].number = "617-555-0101";
people[2].name = "BRIAN";
people[2].number = "617-555-0102";
people[3].name = "DAVID";
people[3].number = "617-555-0103";
for (int i = 0; i < 4; i++)
{
if (strcmp(people[i].name, "EMMA") == 0)
{
printf("%s\n", people[i].number);
return 0;
}
}
printf("Not found\n");
return 1;
}
이름과 전화번호를 캡슐화하기 위해 typedef
라는 키워드를 사용할 수 있다. typedef
는 새로운 데이터 타입을 정의한다. struct는 C에 미리 정의된 키워드로, 여러 자료형을 여기에 담을 수 있다.
typedef struct
{ // 데이터 캡슐
string name;
string number;
}
person; // person이라는 자료형이 있다는 것을 clang에게 알려준다.