1. ctype.h 계열의 문자 검사 함수들
| 함수 | True를 return하는 인자 |
|---|---|
| isalnum() | 알파뉴메릭 문자 (알파벳 혹은 숫자) |
| isalpha() | 연산을 진행 후 값을 1 감소 (선연산, 후 감소) |
| isblank() | 표준 블랭크 문자(스페이스, 수평탭, 개행) 또는 부가적으로 이 역할을 하도록 정의된 local 문자 |
| isdigit() | 숫자 |
| islower() | 영어 소문자 |
| isupper() | 영어 대문자 |
2. ctype.h 계열의 문자 맵핑 함수들
| 함수 | 수행 동작 |
|---|---|
| tolower() | 대문자 전달 -> 소문자 변환한 버전 return, 소문자 전달 -> 그대로 return |
| toupper() | 소문자 전달 -> 대문자로 변환한 버전 return, 대문자 전달 -> 그대로 return |
1. strlen
개요
#include <string.h>
size_t strlen(const char *s);
// 전달 과정에서 원래 string이 손상되지 않도록 reference로 전달
문자열 길이를 반환하는 strlen 함수
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100];
while (1)
{
fgets(str, sizeof(str), stdin);
printf("문자열 길이: %zd\n", strlen(str));
}
return 0;
}

2. strcpy, strncpy
개요
#include <string.h>
char* strcpy(char* dset, const char* src);
char* strncpy(char* dset, const char* src, size_t n);
strncpy()는 복사할 최대 문자열 길이 지정 가능문자열을 복사하는 strcpy와 strncpy 함수
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[20] = "Samuel P. Harbison";
char str2[10];
printf("Original String: %s\n", str1);
strncpy(str2, str1, sizeof(str2) - 1);
str2[sizeof(str2) - 1] = '\0';
printf("New String : %s\n", str2);
return 0;
}

strncpy()한 후 마지막에 NULL 추가3. strcat, strncat
개요
#include <string.h>
char* strcat(char *dest, const char *src);
char* strncat(char *dest, const char *src, size_t n);
// n은 추가 문자열인 src의 최대 길이 지정
문자열을 추가하는 strcat와 strncat 함수
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
char *str2 = "Hello Everybody!";
int main(void)
{
char str1[20];
size_t len = strlen(str2);
for (size_t i=1; i <= len; ++i) {
strcpy(str1,""); // NULL 문자 추가
strncat(str1, str2, i);
puts(str1);
}
return 0;
}

4. strcmp, strncmp
==을 사용한 비교
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char* str1 = "Hello";
char str2[7];
strcpy(str2, str1);
printf("str1: : %s\n", str1);
printf("str2: : %s\n", str2);
if (str1 == str2)
printf("str1 is equal to str2.\n");
return 0;
}

str1 is equal to str2가 출력되지 않음 -> 다른 string 취급!문자열을 비교하는 strcmp, strncmp 함수
#include <string.h>
int strcmp(const char *s1, const char *s2);
// 포인터 s1, s2가 가리키는 char의 비교 결과를 return
| return 값 | 의미 |
|---|---|
| 0보다 큰 값(양수) | s1 > s2 |
| 0 | s1 == s2 |
| 0보다 작은 값(음수) | s1 < s2 |
5. atoi, atol, atof
개요
#include <stdlib.h>
int atoi(char *ptr); // string -> int
long atol(char *ptr); // string -> long
double atof(char *ptr); // string -> double
문자열을 숫자로 변환하는 함수들
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char* str1 = "123";
char* str2 = "321";
printf("123 + 321 = %d\n", atoi(str1)+atoi(str2));
return 0;
}

6. sprintf
문자열에 출력하는 sprintf 함수
#include <stdio.h>
int sprintf(char *str, const char *format, ...);
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char inputs[10][20];
// string을 저장하는 배열 inputs
for (int i = 0; i < 10; ++i) {
sprintf(inputs[i], "input%02d.dat",i);
// inputs 배열의 i번째 원소인 string에 "input0i.dat" 출력
printf("%s\n", inputs[i]);
// sprintf()로 출력한 string을 화면에 출력
}
return 0;
}

printf()와 비슷하게 동작, but 타깃 문자열의 주소인 *str가 인자로 추가됨*str에 내용을 출력함