Language/C

[C언어] 자료구조를 위한 기초 문법 리뷰 - 문자열

Jonnie 2021. 2. 17. 11:23

문자열

 

문자열은 char타입의 배열의 각 칸마다 문자 하나씩 저장된다

문자열을 넣을 배열은 문자열의 길이보다 최소 1은 길어야 한다. (문자열의 끝을 표시하는 역할)

 

char str[6];
str[0] = 's';
str[1] = 't';
str[2] = 'u';
str[3] = 'd';
str[4] = 'y';
str[5] = '\0';	//null character. 문자열의 끝의 표시한다

 

위 방법을 C에서는 " " 를 사용하여 편리하게 이용할 수 있다.

 

char str[] = "study";	//위의 배열을 사용한 코드와 동일한 역할을 한다
char *str = "study";	//결과는 같지만 이렇게 정의된 문자열은 수정이 불가능하다

 

C에서 문자열의 편의성을 높이기 위해서는 string.h 라이브러리를 사용할 수 있다.

이 라이브러리는 문자열을 다루는 다양한 함수를 제공한다.

strcpy

문자열 복사

strlen

문자열의 길이

strcat

문자열 합치기

strcmp

문자열 비교

 

예제) 사용자로부터 단어를 입력받아 이를 저장하는 배열 만들기

 

#include <stdio.h>
#include <string.h>

#define BUFFER_SIZE 100	//입력 받을 단어의 길이는 100으로 제한한다

int main() {
	
	char *words[100];
	//입력 받을 단어의 최대 개수는 100개로 설정한다
	int n = 0;	//입력되어 저장된 단어의 수
	char buffer[BUFFER_SIZE];
	while (scanf_s("%s", buffer) != EOF)	//scanf("%d", &a)  a의 주소를 scanf에게 넘겨준다.
	//buffer의 경우 배열의 이름이 실제 그 배열의 주소를 저장하는 포인터 변수이기 때문에 &를 사용하지 않아도 된다
	//사용자로부터 '단어'를 입력 받는다
	//EOF: End of File.  파일의 끝까지 도달하기 전까지 scanf를 실행하기 위해 사용
	{
		words[n] = strdup(buffer);	//strcpy(str2, str1) str1을 str2로 복사. strdup(str1) str1의 복제본을 만듦
		//입력받은 단어를 배열에 저장한다
		n++;
	}
}

 

 

*참고 강의. 'C로 배우는 자료구조 및 여러가지 예제 실습' - 권오흠

 

 


* 잘못된 내용에 대해서는 댓글 남겨주시면 확인 후 수정하겠습니다!