- 문자열을 배열에 담을 때, escape sequence인 Null문자를 끝에 자동으로 삽입.
- 즉, Null문자가 문자열의 끝을 표현.
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(스트림 지정)
- 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)
- 만약, size보다 큰 문자열을 받으면, 버퍼에 남겨둔다.
- 프로그램이 끝나기 전에 fgets를 다시 호출하면, 버퍼에 남은 부분이 자동으로 입력됨.
- 이는 rewind(stdin)
으로 버퍼를 비울 수 있음.
- 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가 더 크면 음수 반환.)
- int atoi(const char * str)
- long atol(const char * str)
- double atof(const char * str)