int my_strlen(char *str){
int len=-1;
while(str[++len] != '\0');
return len;
}
char* my_strcpy(char* cpystr,const char* str){
int len=-1;
while(str[++len]!= '\0'){
cpystr[len] = str[len];
}
cpystr[len] = '\0';
return cpystr;
}
char* my_strcat(char* catstr,const char* str){
int len=-1,i=-1;
while(catstr[++len] != '\0');
while(str[++i] != '\0'){
catstr[len++] = str[i];
}
catstr[len] = '\0';
return catstr;
}
int my_strcmp(const char* cmpstr1, const char* cmpstr2){
int flag=0,len1=-1,len2=-1;
while(cmpstr1[++len1] != '\0');
while(cmpstr2[++len2] != '\0');
if(len1 > len2)
return 1;
else if(len1 < len2)
return -1;
else{
for(len2=0;len2<len1;len2++){
if(cmpstr1[len2] > cmpstr2[len2])
return 1;
else if(cmpstr1[len2] < cmpstr2[len2])
return -1;
}
}
return 0;
}
char* my_strchr(const char* str,const char ch){
int i=0;
do{
if(str[i] == ch)
return (str+i);
}while(str[i++] != '\0');
return 0;
}
char* my_strstr(const char* str1,const char* str2){
int i=0, str2len=-1;
int tempi,tempj;
while(str2[++str2len] != '\0');
do{
if(str1[i] == str2[0]){
if(str2len == 1)
return str1+i;
else{
tempi = i;tempj = 0;
while(str1[++tempi] == str2[++tempj]){
if(tempj == str2len-1)
return (str1+i);
}
}
}
}while(str1[i++] != '\0');
return 0;
}
<남들은 이해안가는 나만의 알고리즘 풀이>
strcmp함수의 경우 알고리즘은
- 1 - 길이 비교해서 긴 문자열이 큰 문자열로 지정
- 2 - (길이가 같다면) 0번쨰 배열부터 서로 비교해서 한쪽이 더 높은 문자면 그 문자열이 큰 문자열로 지정
- 3 - 문자열의 요소가 모두 같다면 값이 같은 문자열로 지정
strstr함수는
- 1 - 검색하려는 문자열의 길이를 알아내고
- 2 - while문으로 검색받는 문자열의 null을 만날때까지 (먼저) 검색문자열의 첫 요소를 검색받는 문자열의 요소와 비교 검색해 나갑니다.
- 3 - 문자열에서 검색문자열의 첫 요소와 같은 값을 찾았으면 검색문자열과 같을수 있는것으로 보고 검색해 들어갑니다.(만약 검색문자열의 길이가 1이면 바로 주소 출력)검색 문자열과 모두 값이 같으면 주소출력 아니면 처음 같은값은 찾은 문자열부터 다시 검색.
댓글을 꼭 남겨주세요.
댓글 하나하나에 힘이 난답니다!^^