Chapter 13 문자 데이터와 문자열 문자 데이터 문자열
문자 데이터 문자 데이터의 내부 표현: ASCII 코드 (그림 13.4) 문자 집합의 문자 순서: collating sequence 0 < 1 < … < 9 < A < B < … < Z < a < b < … < z 문자 데이터의 자동 변환 int our_toupper(int letter) { /*소문자를 대문자로 변환해 주는 함수 */ if (letter >= ‘a’ && letter <= ‘z’) return (letter – ‘a’ + ‘A’); else return letter; /* end if */ } /* end function our_toupper */ #include <stdio.h> /* our_toupper 함수를 사용하는 프로그램 */ int our_toupper(int x); int main(void) { char letter; printf("Enter a lowercase letter: "); scanf("%c", &letter); printf("Uppercase is: %c", our_toupper(letter)); return 0; } /* end function main */
문자 데이터의 입출력 입력 : ch가 문자형 변수라면 (char ch;) 출력 : scanf(“%c”, &ch); ch = getchar(); 출력 : printf(“%c”, ch); printf(“%d”, ch =getchar()); vs. printf(“%d”, scanf(“%c”, &ch)); 예제 13.5 : 문자 출현 빈도를 출력하는 프로그램 text_character = getchar(); while (text_character != EOF) { if (text_character == character) character_count++; /* end if */ }/* end while */ putchar(‘\n’);
문자 처리 라이브러리 함수 #include <ctype.h>
문자열 요약 문자열이란 한 개의 데이터로 취급되는 문자들의 순서 집합( 배열)이다. 문자열 상수는 원시 프로그램에서 이중 따옴표로 둘러싸인 문자열을 말한다. C 언어에서는 문자열 데이터형을 제공하지 않는다. 그러나, 문자열 변수는 1차원 문자 배열로 정의할 수 있다. char string1[10] = "Bye";과 같이 문자열 변수를 초기화시킬 수 있다. 서식 지정자 %s와 함께 함수 scanf를 사용하면, 문자열 입력을 읽어드릴 수 있다. 공백 문자를 포함하는 문자열을 입력받으려면 표준 함수 gets를 사용하면 된다. 서식 지정자 %s와 함께 함수 printf를 사용하여 문자열 변수를 출력할 수 있다. 매개변수를 통해 문자열을 함수에 전달할 수 있다.
문자열과 포인터 char *string1 = "Hello!"; char string1[10] = "Hello!"; printf("%s", string1); // string1의 내용, 즉 “Hello!”를 출력 printf("%s", (string1 + 1)); // 부분문자열 “ello!”를 출력
번역시간 문자열 초기화 문자열을 상수 크기의 문자 배열로 선언하고 문자열 상수로 직접 초기화 : char string1[10] = "Bye"; 배열 초기화에서 사용한 방법 : char string1[10] = {'B', 'y', 'e‘}; 배열 크기를 선언하지 않은 채 문자열을 초기화 : char string1[] = "Bye"; 포인터 표기법을 이용한 초기화 : char *string1 = "Bye"; 잘못된 초기화 : char string2[5] = "Good bye!"; char string3[2] = "x";와 char string3[] = "x";의 메모리 구조
문자열 변수 입출력 문자열 출력: 문자열 변수 입력 문자열 출력을 위한 함수 puts 사용 문자열 출력을 위한 함수 sprintf 사용 문자열 변수 입력 문자열 입력을 위한 함수 scanf 사용 문자열 입력을 위한 함수 gets 사용 대화형 입력을 위한 함수 gets 및 sscanf 사용
문자열 처리 함수 #include <string.h> 문자열 복사 : strcpy(string1, string2) strncpy(string1, string2, n) 문자열 비교 : strcmp(string1, string2) strncmp(string1, string2, n) 문자열 길이 계산 : strlen(string1) 문자열 연결 : strcat(string1, string2) strncat(string1, string2, n) 부분문자열 처리 문자열에서 부분문자열 존재 여부 확인 : strstr(strng1, string2) 문자열의 특정 문자 검색 : strchr, strrchr, strpbrk 문자열을 토큰으로 분할 : strtok(string1, string2)