[C언어] 문자열

르랑·2021년 7월 26일
1

Programming Language C

목록 보기
8/10

문자열

☆ 배열과 문자열

   - 문자열을 배열에 담을 때, escape sequence인 Null문자를 끝에 자동으로 삽입.
  - 즉, Null문자가 문자열의 끝을 표현.


☆ 상수형태의 문자열 vs. 변수형태의 문자열

 1. char str[]="My String";
  - 변수 형태의 문자열.
  - 값 변경 가능.
  - 10 크기의 배열 str에 저장.
 2. char * str2 = "Your String";
   - 상수 형태의 문자열.
  - 값 변경 불가능.
  - Your String\0은 자동으로 할당되고, *str2에 그 문자열이 할당된 곳의 주소가 담김.


☆ 데이터 이동

 - 이동경로 = 스트림(Stream)
 - 스트림은 OS에서 제공하는 가상의 다리.
 - 키보드 입력은 scanf, printf 사용에 스트림을 임의 생성할 필요가 없음. 즉, 자동 생성, 자동 소멸.
 - 스트림 종류
   1) stdin 표준 입력 스트림(키보드 대상 입력)
   2) stdout 표준 출력 스트림(모니터 대상 출력)
   3) stderr 표준 에러 스트림(모니터 대상 출력)


☆ 문자 단위 입출력 함수

출력

  - putchar(인자)
  - fputc(인자, 스트림 지정)

입력

  - getchar(인자)
  - fgetc(스트림 지정)

+ EOF

  - windows ctrl+z, linux ctrl+D, 함수호출 실패 시, EOF 반환.
  - 이 때, EOF는 -1 이므로, 위 함수들은 int형.


☆ 문자열 단위 입출력 함수

출력

  - puts(const char *s)
  - fputs(const char *s, FILE * stream)

입력

  - char * gets(char * s)
  - char * fgets(char * s, int n, FILE stream)

+ fgets

  - 만약, size보다 큰 문자열을 받으면, 버퍼에 남겨둔다.
  - 프로그램이 끝나기 전에 fgets를 다시 호출하면, 버퍼에 남은 부분이 자동으로 입력됨.
  - 이는 rewind(stdin)으로 버퍼를 비울 수 있음.


+ <string.h>의 함수들

  - strlen(변수명) 문자열의 길이 반환.
  - strcpy(str2, str1) str1을 str2에 복사.
  - strncpy(str2, str1, 크기) str1을 str2에 크기만큼 복사.
  - strcat(str1, str2) str1뒤에 str2을 덧붙임.
  - strncat(str1, str2, 크기) str1뒤에 str2 중 크기를 최대로 하여 덧붙임.
  - strcmp(const char * s1, const char * s2) strncmp(const char * s1, const char * s2, 크기)내용을 비교해서 같으면 0, 같지 않으면 0이 아닌 값을 반환. (s1이 더크면 양수, s2가 더 크면 음수 반환.)


+ <stdlib.h>의 변환 함수들

  - int atoi(const char * str)
  - long atol(const char * str)
  - double atof(const char * str)



0개의 댓글