문자열의 처리
char* fruit = "apple"; //문자열 상수"apple"을 포인터변수에 대입
/* --------------------------------------------
for(int i=0;i<sizeof(fruit);i++){
printf("%s", fruit[i]); //결과 : apple
}
--------------------------------------------*/
/* -------------------------------------------------------------------------------
fruit[0] = 'a' |
fruit[1] = 'p' |
fruit[2] = 'p' |
fruit[3] = 'l' |
fruit[4] = 'e' |
--------------------------------------------------------------------------------*/
while(*fruit != \0){ //*fruit은 포인터변수 fruit(주소값)을 참조. 즉, apple과 같음
printf("%s\n", fruit); //fruit에 저장된 값을 문자형으로 출력
fruit++; //주솟값을 1 증가
}
따라서 결과는
apple pple ple le e |
중요한 문자열 처리 함수
문자배열에 문자열상수를 저장하기
void user_strcpy(char* des, char* src) //des : 선언한 배열 대입 & src : 저장할 문자열 상수 대입
{
while(*src != '\0'){
*des = *src; //선언한 배열 자리에 저장할 문자열요소 대입
src++; //주소값 1씩 증가
des++; //주소값 1씩 증가
}
*des='\0; //마지막 자리 NULL값 대입
}
이 함수를 사용한다.
문자열 복사함수
"string.h"헤더파일에 선언되어있는 char* strcpy(char* , char* ) 함수를 사용한다.
#include<string.h> //선언
...
char str1[20] = "apple";char str2[20] = "banana";
char temp[20]; //임시 저장 배열 선언
strcpy(temp, str1); //temp에 str1 저장
strcpy(str1, str2); //str1에 str2 저장
strcpy(str2, temp); //str2에 temp(원래 str1) 저장
문자열의 길이를 계산하는 함수
unsigned int strlen(char* ) 함수를 사용한다.
int len;
len = strlen(fruit);
printf("%d", len); //5
printf("%d", sizeof(fruit)); //80
문자열을 비교하는 함수
"string.h"헤더파일에 선언되어 있는 int strcmp(char* str1, char* str2) 함수를 사용한다.
크기비교 |
str1 > str2 |
str1 < str2 |
str1 == str2 |
리턴값 |
1 |
-1 |
0 |
#include<string.h> //선언
...
char str1[20] = "banana";char str2[20] = "apple";
char temp[20]; //임시 저장 배열 선언
int res;
res=strcmp(str1, str2);
if(res>0){ //str1 > str2인 경우
strcmp(temp, str1); //temp에 str1 저장
strcmp(str1, str2); //str1에 str2 저장
strcmp(str2, str1); //str2에 temp(원래 str1) 저장
}
두 개의 문자열을 붙이는 함수
"string.h"헤더파일에 선언되어 있는 char* strcat(char* str1, char* str2)함수를 사용한다.
...
#include<string.h> //선언
...
char fruit[80] = "straw";
strcat(fruit, "berry");