Develop
2003.04.23 10:56
[c] 문자열 처리 관련 함수들 설명
조회 수 8015 댓글 0
1. 문자열 함수
strcpy(3) : 문자열을 복사한다.
strncpy(3) : 문자열의 일부를 복사한다.
strcat(3) : 문자열을 결합한다.
strncat(3) : 문자열의 일부를 결합한다.
strlen(3) : 문자열의 길이를 알아본다.
strcmp(3) : 두 문자열을 비교한다.
strncmp(3) : 두 문자열의 일부분을 비교한다.
strcasecmp(3) : 문자열의 대소문자를 가리지 않고 비교한다.
strncasecmp(3) : 대소문자를 가리지 않고 문자열의 일부를 비교한다.
strdup(3) : 문자열을 복사한다.
strchr(3) : 문자열에서 해당되는 문자의 첫번째를 찾아낸다.
strpbrk(3) : 문자열에서 해당되는 문자의 첫번째 문자의 포인터를 리턴한다.
strrchr(3) : 문자열에서 마지막으로 매치되는 문자의 포인터를 리턴한다.
strstr(3) : 문자열이 포함될 때 처음 위치의 문자를 리턴한다.
strspn(3) : 문자열이 일치하는 곳까지 문자의 갯수를 리턴한다.
strtok(3) : 문자열에서 토큰을 분리해낸다.
--------------------------------------------------------------------------------
2. 문자열 복사하기
#include <string.h>
strcpy
char *strcpy(char *dst, const char *src);
strncpy
char *strncpy(char *dst, const char *src, size_t n);
strdup
char *strdup(const char *s1);
--------------------------------------------------------------------------------
3. 문자열 길이 알아보기
strlen
size_t strlen(const char *s);
--------------------------------------------------------------------------------
4. 문자열 비교하기
strcmp
int strcmp(const char *s1, const char *s2);
strncmp
int strncmp(const char *s1, const char *s2, size_t n);
strcasecmp
int strcasecmp(const char *s1, const char *s2);
strncasecmp
int strncasecmp(const char *s1, const char *s2, int n);
다음 프로그램 string.c는 스트링에 관련된 전반적인 사용법을 익히는 프로그램이다.
예: string.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
char * string1 = "hello";
char * string2 = "world";
char * string3;
/** malloc을 이용해서 string3을 위한 공간을 잡아둔다. **/
string3 = (char *)malloc(sizeof(char)*255);
/** string1의 문자열을 string3의 문자열에 결합시킨다. **/
strcat(string3, string1);
/** string2의 문자열을 string3의 문자열에 결합시킨다. **/
strcat(string3, string2);
printf("string1 + string2: %s :: length: %dn", string3, strlen(string3));
/** strcpy를 이용해 string1의 문자열을 string3에 복사한다. **/
strcpy(string3, string1);
printf("string copy from string1 to string3: %sn", string3);
/** strdup을 이용해 string1의 문자열을 string3에 복사한다. **/
string3 = strdup(string2);
printf("string copy from string2 to string3: %sn", string3);
/** strcmp를 이용해서 두 문자열을 비교한다.
리턴 값이 0이면 두 문자열이 같다. **/
if(strcmp(string1, string3) !=0)
printf("string1 and string3 are differnetn");
else
printf("string1 and string3 are samen");
}
--------------------------------------------------------------------------------
5. 문자열에서 원하는 내용의 일부분 찾기
strchr
char *strchr(const char *s, int c);
strrchr
char *strrchr(const char *s, int c);
strpbrk
char *strpbrk(const char *s1, const char *s2);
strstr
char *strstr(const char *s1, const char *s2);
strspn
size_t strspn(const char *s1, const char *s2);
--------------------------------------------------------------------------------
6. 문자열에서 토큰 얻기
strtok
char *strtok(char *s1, const char *s2);
다음 프로그램은 문장에서 원하는 토큰을 찾는 방법을 알려주는 프로그램이다.
예: strtok.c
#include <stdio.h>
#include <string.h>
main()
{
char *p, buf[]="Hello world";
/** buf로 부터 문자열을 읽어와 토큰을 분리한다. 토큰 분리자는 스페이스이다. **/
p = strtok(buf, " ");
/** 분리된 토큰을 출력한다. **/
printf("p = %sn", p);
/** 토큰을 계속해서 얻기위해서는 출처를 NULL로 해야한다. **/
p = strtok(NULL, " ");
printf("p = %sn", p);
p = strtok(NULL, " ");
if(p != NULL)
printf("p = %sn", p);
}
다음 프로그램은 토큰 분리자가 단순한 스페이스가 아니라 다양한 분리자를 허용하는 프로그램이다.
예: strtok2.c
#include <stdio.h>
#include <string.h>
main()
{
char *p, buf[100];
char *re;
re = gets(buf);
/** 토큰 분리자를 스페이스,탭,.,:,*,&,^,%,$,#,@,!,(,)로 설정한다. **/
p = strtok(buf, " t,.:*&^%$#@!()");
while(p != NULL) {
printf("p = %sn", p);
p = strtok(NULL, " t,.:*&^%$#@!()");
}
}
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
177 | PPT |
[ppt] 웜 과제 진행사항(프레임워크 검증환경 구축) 보고
![]() |
hooni | 2013.04.23 | 15939 |
176 | PPT |
[ppt] 웜프레임워크 발표 양식(국보연)
![]() |
hooni | 2013.04.23 | 17058 |
175 | PPT |
[ppt] 전자금융보안론 발표/설치 자료
![]() |
hooni | 2016.05.03 | 1470 |
174 | PPT |
[ppt] 정보보호관리 발표내용
![]() |
hooni | 2016.11.30 | 1210 |
173 | PPT |
[ppt] 정보보호관리 발표내용 #2
![]() |
hooni | 2016.12.08 | 1216 |
172 | Develop |
[python] DJI Tello 드론 코딩 (프로그래밍)
58 ![]() |
hooni | 2018.03.04 | 28806 |
171 | Develop |
[python] 애니팡, 캔디팡 매크로
![]() |
hooni | 2013.09.06 | 18149 |
170 | Develop | [python] 파라미터 앞에 *, ** 의 의미? (*args, **kwargs) | hooni | 2019.11.22 | 1708 |
169 | Develop | [python] 파이썬 공부하는 사이트~ | hooni | 2013.11.12 | 10898 |
168 | Develop | [python][django] request.cookie 읽어오기 ㅋㅋㅋ (쓰기) | hooni | 2019.12.06 | 1847 |
167 | System/OS | [router] 라우팅 프로토콜 BGP (간단한 세팅) | hooni | 2013.04.23 | 11015 |
166 | System/OS | [router] 설정과 기본 명령어들 모음 | hooni | 2013.04.23 | 15758 |