본문 바로가기

Language/C

[C] 문자열

사용법

char str_name[str_len] = "This is a string";

끝애 자동으로 '\0' 추가됨

문자열 입력받기

  1. scanf() : 형식지정자 이용
  2. scanf("%s", my_string); //& 안쓴다. 문자열 이름 자체가 포인터와 같은 역할
  3. gets() : 엔터 키가 눌릴 때까지 입력받음
  4. gets(my_string);
  5. fgets() : 특정 길이의 문자열 읽어옴
    • buffer overflow 방지
    • newline character도 저장(gets()와의 차이점)
    fgets(my_string, 50, stdin);
    stdin : standard input(키보드)

문자열 출력

  1. printf()
  2. puts() : 줄바꿈
  3. puts(str);
  4. fputs()
  5. fputs(str, stdout);

sprintf(), sscanf() 함수

  1. sprintf()
    • 문자열 만들기
    • 다른 데이터 타입으로부터 만들 때 유용
    char my_string[50];
    char month = "August";
    int date = 20;
    sprintf(my_string, "Today is %s %d", month, date);
    printf(my_string);
  2. 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

  1. ASCII to Integer : atoi()
    int num = atoi(str);
  2. 숫자 없으면 0 리턴
  3. ASCII to Float
    숫자 없으면 0.0 리턴
  4. double num = atof(str);
  5. ASCII to long int
    숫자 없으면 0 리턴
  6. 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