문자열 함수(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;
}