문자열
문자열은 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로 배우는 자료구조 및 여러가지 예제 실습' - 권오흠
* 잘못된 내용에 대해서는 댓글 남겨주시면 확인 후 수정하겠습니다!
'Language > C' 카테고리의 다른 글
[C언어] 자료구조를 위한 기초 문법 리뷰 - 포인터, 배열, 동적 할당 (0) | 2021.02.15 |
---|