/*
* made by so_sal
* http://sosal.tistory.com/
*/
#include<string.h> :: c언어 에서 사용합니다.
문자열 처리 함수들을 모아놓은 헤더파일입니다.
#include<cstring> :: c++에서 사용합니다. (사실 안에 string.h를 포함합니다.)
strlen() :: string lenth :: 길이 구하기
strcpy() :: string copy :: 복사
strncpy() :: string + n + copy :: n만큼 복사
strcmp() :: string compare :: 문자열 비교 (대소문자 구분)
strncmp() :: string + n + copy :: 문자열 n만큼 비교 (대소문자 구분)
strcat() :: string concatenate :: 문자열 연결 (이어쓰기)
strncat() :: string + n + concatenate :: 문자열 n만큼 연결 (이어쓰기)
만약 배열을 strcmp, 또는 strncmp 로 비교한다면,
NULL 문자를 만날시, 배열의 끝으로 생각하여 뒷부분은 더이상 비교하지 않게 됩니다.
이 경우까지 생각해서, 자기가 원하는 만큼의 메모리 만큼 비교 하고 싶다면,
memcmp()를 사용하세요. 반환값은 strcmp, strncmp와 같습니다.
아래는 위 함수 사용 예제입니다.
============== strlen 예제 =============
#include<iostream>
#include<cstring> //예제는 C++로 구현.
using namespace std;
int main(){
char aTemp1[100] = "I'm a programmer.";
char *pTemp2 = "I'm a programmer.";
char aTemp3[] = "C++ How To Program";
cout<<sizeof(aTemp1)<<endl; //출력값 100 // 배열의 크기를 반환. 1byte * 100 = 100
cout<<sizeof(pTemp2)<<endl; //출력값 4 // 포인터의 크기는 4byte
cout<<sizeof(aTemp3)<<endl; //출력값 19 // 문자열의 길이 + 1 (18 + 1)
// 배열의 끝을 알려주는 것은 NULL 문자입니다.
// 따라서, 18개의 문자 배열에는 17개밖에 쓰지 못합니다.
cout<<strlen(aTemp1)<<endl; //17 모두 실제 문자열의 길이값이 나옵니다.
cout<<strlen(pTemp2)<<endl; //17 NULL문자를 제외한 배열의 길이입니다.
cout<<strlen(aTemp3)<<endl; //18 글자의 길이
return 0;
}
============== strcpy, strncpy 예제 =============
#include<iostream>
#include<cstring> //저는 c++로 코딩합니다.
using namespace std;
int main(void){
char arr1[100]="Hello? ";
strcpy(arr1,"babo\n"); //\n는 캐리지 리턴, 엔터를 친 효과
cout<<arr1<<endl; //Hello? babo
char arr2[100]="Hello? ";
strncpy(arr2,"babo\n",5); //\n는 1바이트라서 5라 썼어요
cout<<arr2<<endl; //Hello? babo
return 0;
}
============== strcpy, strncpy 예제 =============
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char string1[100]; //버퍼...
char string2[100];
strcpy(string1,"SOSAL); //string1 에다가 SOSAL 이란 문자열 (문자열은 " ~ ", 문자는 ' ')
cout<<string1<<endl; //을 복사하여 출력~
strncpy(string1,"SOSAL",5); //string1 에다 SOSAL이란 문자열을 5개만큼 복사
cout<<string2<<endl; // 하여 출력
return 0;
}
============== strcmp, strncmp 예제 =============
#include<iostream> //문자열 비교함수 예제입니다.
#include<cstring> //strcmp() 인자는 포인터나 주소값을 넣어줘야합니다.
using namespace std;
void main(void){
char *a="a";
char *b="b";
char *Sa="abcc";
char *Sb="abcd";
int ret;
cout<<strcmp(a,b)<<strcmp(b,a)<<strcmp(a,a)<<endl;
//우측이 크다면 -1 //좌측이 크다면 1 // 같다면 0을 리턴합니다.
//배열이 끝날때까지 확인합니다.
cout<<strncmp(Sa,Sb,4)<<strncmp(Sb,Sa,10)<<strncmp(Sa,Sa,10)<<endl;
//우측이 크다면 -1 //좌측이 크다면 1 // 같다면 0을 리턴합니다.
}
============== strcat, strncat예제 =============
#include<iostream> //문자열 비교함수 예제입니다.
#include<cstring> //strcmp() 는 strcpy()를 이어쓰기로
using namespace std; //실행한다고 생각하시면 됩니다.
void main(void){
char arr[100] = "abracadabra";
strcat(arr," Zzang!!");
cout<<arr<<endl; // abracadabra Zzang!! 이 출력됩니다.
strncat(arr," Zzang!!",5); //
cout<<arr<<endl; // abracadabra Zzang!! Zzang 이 출력됩니다.
}
'Programing > C- programing' 카테고리의 다른 글
C++ 배열에서 원하는 문자열 찾아서 고치기 바꾸기 (1) | 2009.10.15 |
---|---|
C++ 배열에서 원하는 크기 삭제 프로그램 코드 (1) | 2009.10.15 |
C++ class date 코드 (0) | 2009.10.15 |
C++ Class 생성자 소멸자 간단한 코드 (2) | 2009.10.13 |
Pointer * Reference (2) | 2009.09.29 |