사용법
char str_name[str_len] = "This is a string";
끝애 자동으로 '\0' 추가됨
문자열 입력받기
scanf()
: 형식지정자 이용scanf("%s", my_string); //& 안쓴다. 문자열 이름 자체가 포인터와 같은 역할
gets()
: 엔터 키가 눌릴 때까지 입력받음gets(my_string);
fgets()
: 특정 길이의 문자열 읽어옴- buffer overflow 방지
- newline character도 저장(
gets()
와의 차이점)
stdin : standard input(키보드)fgets(my_string, 50, stdin);
문자열 출력
printf()
puts()
: 줄바꿈puts(str);
fputs()
fputs(str, stdout);
sprintf()
, sscanf()
함수
sprintf()
- 문자열 만들기
- 다른 데이터 타입으로부터 만들 때 유용
char my_string[50]; char month = "August"; int date = 20; sprintf(my_string, "Today is %s %d", month, date); printf(my_string);
sscanf(()
- 문자열으로부터 값 입력받기
char info[]="Seoul KR 9776000"; char city[25], country[]; int population; sscanf(info, "%s %s %d", city, country, population);
함수들
헤더
#include <string.h>
길이 구하기 : strlen()
strlen(str);
문자열 합치기 : strcat()
, strncat()
//s1에 s2 합치기
strcat(s1, s2);
//정해진 문자 수만큼 합치기
strncat(s1, s2, num);
문자열 복사 : strcpy()
, strncpy()
//s1에 s2 복사
strcpy(s1, s2);
//정해진 문자 수만큼 복사
strncpy(s1, s2, n);
대소문자 바꾸기 : strlwr()
, strupr()
//소문자로 바꾸기
strlwr(str);
//대문자로 바꾸기
strupr(str);
문자열 뒤집기 : strrev()
두 문자열 비교 : strcmp()
, strncmp()
두 문자열이 동일하면 0 리턴, s1<s2면 음수 리턴, s1>s2면 양수 리턴
//문자열 전체 비교
strcmp(s1,s2);
//정해진 문자 수만큼 비교
strncmp(s1,s2,n);
문자열에서 문자 찾기 : strchr()
, strrchr()
문자열에서 특정 문자를 발견하면 해당 위치의 포인터 반환
찾지 못하면 NULL 반환
//문자열을 앞에서부터 탐색
strchr(str, c);
//문자열 뒤에서부터 탐색
strrchr(str, c);
문자열에서 부분 문자열 찾기 : strstr()
문자열에서 특정 부분 문자열을 찾으면 시작 부분의 포인터 반환, 찾지 못하면 NULL 반환
strstr(s1, s2);
문자열을 숫자로 바꾸기
헤더
#include <stdio.h>
ASCII to Integer/Float/Long int
- ASCII to Integer :
atoi()
int num = atoi(str);
- 숫자 없으면 0 리턴
- ASCII to Float
숫자 없으면 0.0 리턴 double num = atof(str);
- ASCII to long int
숫자 없으면 0 리턴 long long num = atol(str);
문자열의 배열
2차원 배열 이용 가능
char str[5][25]={
"Hello",
"World",
"Games Summit"
}
str[2][1]
과 같은 방식으로 접근 가능
'Language > C' 카테고리의 다른 글
[C] 함수 포인터 (0) | 2021.08.21 |
---|---|
배열 (0) | 2021.07.13 |