본문 바로가기

문자열

(5)
C 언어 | 문자열의 비교 학습 목표 문자열이 저장되어 있는 방식에 근거해서 문자열을 비교하는 방법에 대해 설명할 수 있다. 문자열의 출력 문자열의 주소를 출력하는 예시를 다시 보자. #include int main(void) { char *s = "EMMA"; printf("%p\n",s); } 앞선 강의에서 문자열의 주소는 s라는 포인터의 값, 즉 문자열의 가장 첫 값인 s[0]의 메모리 주소를 출력한다 배웠다. 그렇다면 아래 코드가 무엇을 출력하는지 보자. printf("%p\n", &s[0]); printf("%p\n", &s[1]); printf("%p\n", &s[2]); printf("%p\n", &s[3]); 위의 예제에 코드를 추가(8-11)한 모습이다. 명령 프롬프트로 부터 알 수 있는 것은 다음과 같다. &s[..
C 언어 | 문자열과 포인터 이제껏 문자열을 저장하기 위해 CS50 라이브러리에 포함된 string 자료형을 사용했다. 하지만 이는 실제 C에서는 존재하지 않는 자료형이다. 학습 목표 문자열 형태의 새로운 자료형인 string이 어떻게 정의되었는지 설명할 수 있다. 문자열과 포인터 변수 s에 "EMMA"라는 값을 저장하는 프로그램을 예로 들어보자. #include #include int main(void) { string s = "EMMA"; printf("%s\n",s); } cs50 라이브러리를 사용해, 즉 string 타입을 사용해 값을 출력한 모습이다. 프로그램을 설명하자면 다음과 같다. "EMMA"는 문자의 배열이고 s[0]=E, s[1]=M과 같이 하나씩 표현될 수 있다. 문자의 마지막인 s[4]는 \0로, 0으로 이루어..
C 언어 | 문자열의 활용 ✔ 학습목표 문자열을 탐색하고 일부 문자를 수정하는 코드를 구현할 수 있다. 문자열의 길이 및 탐색 사용자로부터 문자열을 입력받아 한 글자씩 출력하는 프로그램을 만들어보자. 한 글자씩 출력해야 하기 때문에 출력에 있어서는 루프를 사용해야 할 것이다. 그렇다면 문자열의 끝은 어떻게 알 수 있을까? 한 가지 방법은 지난 강의에서 배운 대로 널 종단 문자(\0)를 이용하는 것이다. s라는 문자열이 있다고 할 때 for(int i = 0; s[i] != '\0'; i++){...} 과 같은 루프를 사용하는 것이 그 예이다. #include #include #include int main(void) { string s = get_string("Input: "); printf("Output:\n"); for (in..
C 언어 | 문자열과 배열 ✔ 학습목표 문자열이 C에서 정의되는 방식과 메모리에 저장되는 방식을 설명할 수 있다. 문자열과 배열 문자열(string) 자료형의 데이터는 사실 문자(char) 자료형 데이터들의 배열이었다. string s = "Hi!"; 와 같이 문자열 s가 정의되어 있다고 생각해보자. s는 문자의 배열이기 때문에 메모리상에 아래처럼 저장되고, 인덱스(예) s[0], s[1] 등)로 각 문자에 접근할 수 있다. 여기서 가장 끝의 '\n'은 문자열의 끝을 나타내는 널 종단문자다. 이는 모든 비트가 0인 1바이트를 의미한다. string names[4]; names[0] = "EMMA"; names[1] = "RODRIGO"; names[2] = "BRIAN"; names[3] = "DAVID"; printf("%s\n..
C 언어 | 문자열 ✔ 학습목표 C로 문자열 형식을 가진 변수를 선언하고 출력하는 프로그램을 만들 수 있다. 프로그램 생성 간단하게 'hello world'만 출력했던 지난 강의와 달리, 직접 문자열을 받고 출력하는 프로그램을 생성했다. 예제(string.c)는 다음과 같다. #include #include int main(void){ string answer = get_string("what's your name?\n"); printf("hello %s\n", answer); } 1) 변수 설정 사용자의 이름을 받아서 인사를 출력하는 프로그램이다. 변수명은 answer로 정했다. C는 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해주어야 한다. 본 예제에서는 문자열을 저장하고 싶기 때문에 st..