문자열
문자열 조작 함수
표준 C라이브러리에서 제공하는 다양한 문자
사용하기가 편리하며 직접 구현도 가능하다.
string.h 헤더파일에 선언되어 있다.
문자열 처리 함수의 종류
str 로 시작되는 함수
mem 으로 시작되는 함수
Strlen()
문자열의 길이를 반환하는 함수
Size t strlen(const char *string);
String Length
문자열의 전체 길이를 계산하여 반화
마지막의 NULL 문자를 포함하지 않는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(){ char ch[20]; printf("문자열 입력 : "); fgets(ch,sizeof(ch),stdin); printf("문자열의 길이는 : %d\n",strlen(ch)); return 0 } | cs |
strcpy
문자열을 복사하는 함수
char * strcpy(char * dest, const char * src);
string Copy.
Dest로 전달된 배열에 src로 전달된 문자열을 복사
문자열을 정해진 크기만큼 복사하는 함수
char * strncpy(char * dest, const char * src , size_t n);
복사하느 문자열의 최대길이는 n을 넘지 않는다.
Overflow가 일어나지 않으므르 보안상으로 안전하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Void func(){ char ar1[10] = "apple"; char ar2[10] = "orange"; printf("ar1 : %s \n" ,ar1); strcpy(ar1,ar2); printf("ar1 : %s \n" ,ar1); strncpy(ar1 , "banananananananan",sizeof(ar1)-1); printf("ar1 : %s \n" ,ar1); } | cs |
strcat
Char * strcat(char * dest, const char * src);
Dest로 전달된 배열에 src로 전달된 문자열을 연결한다.
두 문자열을 합쳐야 함으로 배열의 크기계산을 잘 해준다.
문자열을 정해진 크기만큼 연결하는 함수
Char * strncat(char * des , const char * src, size_t n)
연곃나는 문자열의 최대길이는 n을 넘지 않는다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Void func(){ Char si[10] ="서울시"; Char gu[10] = "동대문구"; Char dong[10] = "신설동"; Char address[100] = "\0"; Strncat(address, si , sizeof(address)-1); Strncat(address, gu , sizeof(address)-1); Strncat(address, dong , sizeof(address)-1); } | cs |
Strcmp
문자열을 비교하는 함수
Int strcmp(char * dest, const char * src);
String compare
문자열을 비교하여 어떠한 결과를 리턴
두 문자열이 같은 경우 0을 반환 그맇지 않을 경우 음수나 양수를 반환
문자열을 정해진 크기만큼만 비교하는 함수
Int strmcmp(char * desc, const char *src,size_t n)
비교하는 문자열의 최대길이는 n을 넘지 않는다
정해진 구역까지만 비교 할 수 있어 유용하게 사용 가능하다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | void func(){ char ar1[10] = "apple"; char ar2[10] = "apple"; int tmp; tmp = strcmp(ar1,ar2); printf("비교 값 %d\n",tmp); //두 문자열이 같을 때 0을 반환 tmp = strcmp(ar1,"orange"); printf("비교 값 %d\n",tmp); // 뒤의 문자열의 값이 더 클 때 -1 tmp = strcmp(ar1,"appld"); printf("비교 값 %d\n",tmp); // 앞의 문자열의 값이 더 클때 1 tmp = strncmp(ar1,"apppp",3); printf("비교 값 %d\n",tmp); // 앞의 3문자만 비교하여 결과를 반환 } | cs |
스트림에 대한 이해
바이트들이 순서대로 입출력되는 논리적인 장치
데이터를 받아들이는 것을 입력 스트림이라 한다
데이터를 내보내는 것을 출력 스트림이라 한다
표준 입출력
gets
prentf
Scanf
입력함수
표준 입력 함수
Int scanf(cost *format[,argume],..);
Int getchar(void);//키보드로부터 한 개의 문자를 입력 받는다.
Int getch(void); //문자 하나를 입력 받는 즉시
Char * gets(char *buffer); //버퍼로 부터 한줄을 읽어온다
스트림을 지정할수 있는 입력함수
Int fgetc(file * stream); //문자 하나를 입력 스트림을 지정
Char * fgets(char *str,int n. FILE * stream);
Int fscanf(FILE * stream, const *format[,argumen],…);
출력함수
표준 출력함수
Int printf(const *format[,argumen],…);
Int putchar(void); // 한 개의 문자를 출력한다.
Char * puts(const char *string); //문자열을 읽어와 출력한다.
스트림을 지정할 수 있는 출력 함수
Int fputc( int c,FILE * stream);//문자 하나를 입력 스트림을 지정
Char * fputs(const char *str, FILE * stream);
Int fprintf(FILE * stream, const *format[,argumen],…);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | void print_reverse(){ char string[]="Reverse"; char tmp; int i=0; int j=0; printf("입력받은문자열"); gets(string); printf("%s\n",string); for(i=0;string[i]!= '\0';i++){ tmp=string[i]; for(j=0;string[j]!= '\0';j++){ string[j]= string[j+1]; } string[i-1]=tmp; printf("%s\n",string); } } | cs |