'문자열 함수'에 해당되는 글 1건

  1. 2011.11.02 [문자열 함수(strcpy, strcat, strcmp strset, strlen, strupr, strchr등)]
문자열 함수(string.h) 
 
모든 시간 함수의 원형은 time.h 헤더 파일에 선언되어 있으므로 시간 관련 함수를 사용하려면 반드시 time.h를 인클루드 해야 합니다. 
 
 

char *strcpy( char *strDestination, const char *strSource ); 
Source의 문자열을 Destination에 복사 
char *strncpy( char *strDest, const char *strSource, size_t count ); 
Source의 문자열을 Destination에 n 만큼 복사 
 
 

예제9) strcpy 
#include <stdio.h> 
#include <string.h> 
int main() 
    char str1[20] = "Good"; 
    char str2[20] = "Morning";
    char str3[20]; 
    strcpy(str3, str1); 
    printf("str3 = %s\n", str3); 
    strncpy(str3, str2, 4); 
    printf("str3 = %s\n", str3); 
return 0; 
 
 

}

 
 

char *strcat( char *strDestination, const char *strSource ); 
Source의 문자열을 Destination에 연결 
char *strncat( char *strDest, const char *strSource, size_t count ); 
Source의 문자열을 Destination에 n 만큼 연결 
 
char fruit[80] = "straw";
strcat(fruit, "berry"); 
 




예제10) strcat 
#include <stdio.h> 
#include <string.h> 
int main() 
    char str1[20] = "Good"; 
    char str2[20] = "Morning";
    char str3[20] = "\0"; 
    strcat(str3, str1); 
    printf("str3 = %s\n", str3); 
    strncat(str3, str2,4); 
    printf("str3 = %s\n", str3); 
return 0; 
 
 

}

 
 

int strcmp(const char *string1, const char *string2 ); 
string1과 string2를 비교해서 같으면 0 앞의 문자열이 크면 1 뒤의 문자열이 크면 -1을 반환, 대소문자를 구별함 
int strncmp( const char *string1, const char *string2, size_t count ); 
string1과 string2를 count 만큼 비교해서 같으면 0 앞의 문자열이 크면 1 뒤의 문자열이 크면 -1을 반환, 대소문자를 구별함 
int stricmp( const char *string1, const char *string2 ); 
string1과 string2를 비교해서 같으면 0 앞의 문자열이 크면 1 뒤의 문자열이 크면 -1을 반환, 대소문자를 구별하지 않음 
int _strnicmp( const char *string1, const char *string2, size_t count ); 
string1과 string2를 count 만큼 비교해서 같으면 0 앞의 문자열이 크면 1 뒤의 문자열이 크면 -1을 반환, 대소문자를 구별하지 않음 
 
 

예제11) strcmp 
#include <stdio.h> 
#include <string.h> 
int main() 
    char str1[20] = "Good"; 
    char str2[20] = "Morning"; 
    printf("%d\n", strcmp(str1, str2)); 
    strcpy(str2, "Good Morning"); 
    printf("%d\n", strncmp(str1, str2,4)); 
    strcpy(str2, "good"); 
    printf("%d\n", strcmp(str1, str2)); 
    printf("%d\n", stricmp(str1, str2)); 
    printf("%d\n", strnicmp(str1, str2,4)); 
return 0; 
}

 
 

char *strset( char *string, int c ); 
string 문자열을 c 문자로 채움 
char *strnset( char *string, int c, size_t count ); 
string 문자열 중 count에 해당하는 만큼 c 문자로 변경 
 
 

예제12) strset 
#include <string.h> 
#include <stdio.h> 
int main( ) 
char string[] = "Fill the string with something"; 
printf( "Before: %s\n", string ); 
strset( string, '*' ); 
printf( "After: %s\n", string ); 
strnset( string, '?', 4 ); 
printf( "After: %s\n", string ); 
return 0; 
 
 

}

 
 

strlwr( char *string ); 
string 문자열을 소 
예제13) strs 문자로 변경 
char * strupr( char *string ); 
string 문자열을 대문자로 변경 
size_t strlen( const char *string ); 
string 문자열의 글자 수 반환 
 
 

예제13) strlwr 
#include <string.h> 
#include <stdio.h> 
int main() 
char string[] = "Fill the string with something"; 
int location; 
printf("string의 소문자 %s\n", strlwr(string)); 
printf("string의 대문자 %s\n", strupr(string)); 
printf("string의 메모리 사이즈 %d\n", sizeof(string)); 
printf("string의 문자 수 %d\n", strlen(string)); 
return 0; 
 
 

}

 
 

char * strchr( const char *string, int c ); 
string에서 문자 c의 메모리 위치 반환 
char *strrchr( const char *string, int c ); 
string에서 문자 c의 메모리 위치 반환(뒤에서부터 검색) 
 
 

예제14) strchr를 이용해서 문자열에서 첫 번째 검색 위치를 찾아내는 프로그램 
#include <stdio.h> 
#include <string.h> 
int main() 
    char str[256] = "My name is Park Moon Seok"; 
char *ptr; 
    char ch; 
    int result; 
    while(1) 
    { 
        printf("찾고자 하는 문자를 입력하세요=>"); 
        ch = getchar(); 
        fflush(stdin); 
        printf("1. 앞에서 2. 뒤에서=>"); 
        menu = getchar(); 
        ptr = strchr(str, ch); 
        result = ptr - str + 1; 
 
 

            if(ptr != NULL ) 
            { 
    printf( "Result: 첫번째 %c 발견위치 = 앞에서 %d 번째\n", ch, result ); 
            } 
            else 
            { 
             printf( "Result:%c는 없습니다\n", ch ); 
            } 
    return 0; 
}

strrchr은 뒤에서부터 검색하게 되는데 위치를 리턴 하므로 문자가 하나만 있는 경우는 같은 결과가 나올 것이고 o를 검색하면 다르게 나올 것 입니다. 
예제15) strchr를 이용해서 문자열에서 o의 개수를 알아내는 프로그램 
#include <stdio.h> 
#include <string.h> 
int main() 
char str[256] = "My name is Park Moon Seok"; 
char *ptr = str; 
unsigned int i,count=0; 
for (i=0;i<strlen(str);i++) 
     { 
ptr = strchr(ptr,'M'); 
if (ptr == NULL) 
         { 
break; 
count++; 
         ptr ++; 
printf("입력한 문자열에는 o가 %d개 있습니다.\n",count); 
}

 
 

char *strstr( const char *string, const char *strCharSet ); 
string에서 문자열 strCharSet의 메모리 위치 반환 
strcmp는 전체 일치하는 문자열은 검색할 수 있지만 부분 일치는 알아낼 수 없습니다. 
부분 일치를 찾아 낼 때 사용하는 함수 입니다. 
char *strpbrk( const char *string, const char *strCharSet ); 
string에서 문자열 strCharSet 중 첫 번째 나오는 메모리 위치 반환 
예제16) strstr, strpbrk를 이용해서 문자열에서 문자열을 검색하는 프로그램 
#include <stdio.h> 
#include <string.h> 
int main() 
char str[256] = "My name is Park Moon Seok"; 
char *ptr; 
unsigned int result; 
ptr = strstr(str,"name"); 
         result = ptr - str + 1; 
if(ptr != NULL ) 
            { 
        printf( "Result: name 발견위치 = 앞에서 %d 번째\n", result ); 
            } 
            else 
            { 
             printf( "Result: name은 없습니다\n"); 
            } 
         ptr = strpbrk(str,"xyz"); 
         result = ptr - str + 1; 
if(ptr != NULL ) 
            { 
        printf( "Result: xyz 중 하나 발견위치 = 앞에서 %d 번째\n", result ); 
            } 
            else 
            { 
             printf( "Result: xyz는 없습니다\n"); 
            } 
    return 0; 
}

char *strtok(char *strToken, const char *strDelimit); 
strToken을 strDelimit 단위로 분할해주는 함수 
 
 

예제17) strtok를 이용해서 공백을 기준으로 분할하는 예제 
#include <string.h> 
#include <stdio.h> 
char string[] = "My name is Park Moon Seok"; 
char *token; 
int main( ) 
token = strtok(string," "); 
while( token != NULL ) 
printf( "%s\n", token ); 
     token = strtok(NULL, " "); 
return 0; 
}
Posted by cyj4369
,