티스토리 뷰

DEV/C 언어

문자열

초록매실원액 2016. 1. 14. 13:40

문자열 조작 함수

  • 표준 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




'DEV > C 언어' 카테고리의 다른 글

포인터  (0) 2016.01.04
switch  (0) 2016.01.04
반복문  (0) 2015.12.29
재귀함수  (0) 2015.12.29
System()  (0) 2015.12.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함