12.1 문자와 문자열
문자(character)
작은따옴표를 이용하여 표기: 'A'
char형 변수에 하나의 문자를 저장
문자열(string)
큰따옴표를 이용하여 표기: "Hello"
char형 배열에 여러 문자들을 저장
문자열의 끝에 NULL 문자 삽입
NULL 문자 ('\0')
ASCII 코드 값이 0인 문자
문자열은 반드시 NULL 문자로 종료
문자열 출력
반복문으로 문자 배열 원소 출력
형식 지정자 "%s" 사용
문자 배열 전달
메모리 세그먼트
Text | 프로그램 기계어 코드 저장 읽기 가능, 쓰기 금지 |
Data | 초기화된 전역 변수와 정적 변수, 배열 저장 수정 및 변경 가능 |
BSS | 초기화되지 않은 전역 변수와 정적 변수 저장 런타임 이후 메모리 할당 |
Heap | 사용자 요구에 맞도록 런타임에 동적으로 메모리 할당 malloc(), calloc(), realloc() 함수 사용 |
Stack | 지역 변수, 매개변수 저장 LIFO 구조 |
문자열 상수
프로그램 소스 안에 포함된 문자열
텍스트 세그먼트 메모리 영역에 저장 (읽기만 가능)
문자열 상수 (변경 불가)
char *p = "HelloWorld";
strcpy(p, "Goodbye");
문자열 상수 (변경 가능)
char p[] = "HelloWorld";
strcpy(p, "Goodbye");
문자형 포인터 배열
여러 개의 문자열 상수를 저장
12.2 문자 입출력 라이브러리
문자 입출력 함수
함수 | 설명 |
int getchar(void) | 하나의 문자를 읽어서 반환한다. |
void putchar(int c) | 변수 c에 저장된 문자를 출력한다. |
int _getch(void) | 하나의 문자를 읽어서 반환한다. (버퍼 미사용 |
void _putch(int c) | 변수 c에 저장된 문자를 출력한다. (버퍼 미사용) |
scanf("%c", &c) | 하나의 문자를 읽어서 변수 c에 저장한다. |
printf("%c", c); | 변수 c에 저장된 문자를 출력한다. |
EOF (End-of-File)
파일의 끝을 의미하며 -1로 정의
콘솔에서 입력 시 EOF 발생
문자 입출력 함수
함수 | 헤더 파일 | 버퍼 사용 여부 | 에코 여부 | 응답성 | 문자 수정 여부 |
getchar() | <stdio.h> | 사용 (엔터키) | 에코 | 줄 단위 | 가능 |
_getch() | <conio.h> | 사용하지 않음 | 에코하지 않음 | 문자 단위 | 불가능 |
_getche() | <conio.h> | 사용하지 않음 | 에코 | 문자 단위 | 불가능 |
scanf()와 printf()
형식 지정자 "%c"를 사용하여 입출력
12.3 문자열 입출력 라이브러리
문자열 입출력 함수
함수 | 설명 |
int scanf("%s", s) | 문자열을 읽어서 문자 배열 s[]에 저장한다. |
int printf("%s", s) | 문자 배열 s[]에 저장되어 있는 문자열을 출력한다. |
char *gets_s(char *s, int size) | 한 줄의 문자열을 읽어서 문자 배열 s[]에 저장한다. |
int puts(const char *s) | 문자 배열 s[]에 저장되어 있는 한 줄의 문자열을 출력한다. |
scanf()와 printf()
형식 지정자 "%s"를 사용하여 입출력
12.4 문자 처리 라이브러리
문자 처리 함수: <ctype.h>
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c;
while ((c = getchar()) != EOF)
{
if (islower(c))
c = toupper(c);
putchar(c);
}
}
12.5 문자열 처리 라이브러리 함수
문자열 처리 함수: <string.h>
strcpy(s1, s2): s2를 s1에 복사한다.
문자열 토큰 분리: strtok()
문장에서 단어를 분리할 수 있는 함수
토큰 분리자를 임의로 지정 가능
토큰에 대한 포인터를 반환
문자열과 숫자
문자열 "36.5"
실수값 36.5
12.6 문자열 수치 변환
문자열을 수치로 변환
sscanf() 함수와 sprint() 함수
atoi() 함수와 atof() 함수
sscanf() 함수와 sprint() 함수:<stdio.h>
함수 | 설명 |
sscanf(s, ...) | 문자열 s로부터 지정된 형식으로 수치를 읽어서 변수에 저장한다. |
sprintf(s, ...) | 변수의 값을 형식 지정자에 따라 문자열 형태로 문자 배열 s에 저장한다. |
atoi() 함수와 atof() 함수: <stdlib.h>
함수 | 설명 |
int atoi(const char *str); | str을 int형으로 변환한다. |
double atof(const char *str); | str을 double형으로 변환한다. |
12.7 문자열 여러 개를 저장하는 방법
문자열 배열과 포인터 배열
문자열 배열 (2차원) | 포인터 배열 (문자형) |
char s[3][6] = { "init", "open", "close" }; |
char* s[3] = { "init", "open", "close" }; |
'잠든 카테고리 > 쉽게 풀어쓴 C언어 Express' 카테고리의 다른 글
13-13.1(구조체란 무엇인가?)~13.9(typedef) (0) | 2022.06.14 |
---|---|
11-11.1(포인터란?)~11.7(포인터 사용의 장점) (0) | 2022.06.14 |
10-10.1(배열이란?)~10.6(2차원 배열) (0) | 2022.06.10 |
09-9.1(변수의 속성)~9.8(순환 호출)+Advanced Topic (0) | 2022.06.10 |
08-8.1(함수란?)~8.7(함수를 사용하는 이유)+Advanced Topic (0) | 2022.06.09 |