#include <stdio.h>
#include <ctype.h>
size_t my_strlen(char *str)
{
int len = 0;
while(*(str++) != '\0')
len++;
return len;
}
char* my_strcpy(char* dest, const char* src)
{
char *ori = dest;
while(*src != '\0')
*(dest++) = *(src++);
*dest = '\0';
return ori;
}
char* my_strcat(char* dest, const char* src)
{
char *ori = dest;
/*일단 목적지의 끝까지 이동..*/
while(*(dest++) != '\0')
;
dest--;
while(*src != '\0')
*(dest++) = *(src++);
*dest = '\0';
return ori;
}
int my_strcmp(const char* s1, const char* s2)
{
int result = 0;
do
{
result = *s1 - *s2;
if(result != 0)
return result;
s1++;
s2++;
} while (*s1 != '\0' || *s2 != '\0');
return result;
}
/*
오류
--- 중간에 -나오면 오류...
--- 중간에 문자 나오면 오류..
--- 처음에 공백문자 나오면 오류..
*/
int my_atoi(char *ptr)
{
int result = 0;
int sign = 1; /*1: 양수 -1:음수*/
do {
if(*ptr == '-')
sign = -1;
else
result = (result*10) + (*ptr-'0');
} while(*(++ptr) != '\0');
return result * sign;
}
/*
오류
- 중간에 - 나오면 오류..
- 중간에 문자 나오면 오류..
- 처음에 공백문자 나오면 오류..
- .이 2번 나오면 오류..
*/
double my_atof(char *ptr)
{
double result = 0.0;
double sign = 1.0;
double add = 0.1;
int flag = 0; /* 0->정수 1->소수점 이하.*/
if(*ptr == '-') {
sign = -1.0;
ptr++;
}
do {
if(*ptr == '.')
flag = 1;
else if(flag == 0)
result = (result*10.0) + (*ptr-'0');
else if(flag == 1) {
result += (*ptr-'0') * add;
add /= 10.0;
}
} while(*(++ptr) != '\0');
return result * sign;
}
/*made by teacher*/
/*
알고리즘
*/
void my_atoi(int num, char* ptr)
{
}
/*end*/
char *my_strchr(const char *ptr, int c) {
while(*ptr != '\0')
{
if(*ptr == c)
return ptr;
ptr++;
}
return NULL;
}
// char *my_strstr(const char *str, const char *strCharSet)
// {
// int i=0;
// do {
// if(*str == *strCharSet) {
//
// }
//
// } while(*(++str) != '\0');
//
// return NULL;
// }
int main()
{
char str1[20] = "AMPLIFER";
char str2[20];
/*str_len*/
printf("ABCDEFG => %d\n", my_strlen("ABCDEFG"));
/*strcpy*/
printf("Original : %s\n", str1);
my_strcpy(str2, str1);
printf("New : %s\n", str2);
/*strcat*/
my_strcat(str1, " SA-20");
printf("Cat : %s\n", str1);
/*strcamp*/
printf("%s : AMPLIFER = %d\n",str2, my_strcmp(str2, "AMPLIFER"));
printf("%s : AMPLIFE = %d\n",str2, my_strcmp(str2, "AMPLIFE"));
printf("%s : AMPLIFER STER = %d\n",str2, my_strcmp(str2, "AMPLIFER STER"));
/*atoi*/
printf("1234 -> %d\n", my_atoi("1234"));
printf("423341 -> %d\n", my_atoi("423341"));
printf("0 -> %d\n", my_atoi("0"));
printf("-3421 -> %d\n", my_atoi("-3421"));
/*atof*/
printf("1234.1234 -> %f\n", my_atof("1234.1234"));
printf("-123.0 -> %f\n", my_atof("-123.0"));
printf("0.2342-> %f\n", my_atof("0.2342"));
/*itoa*/
/*strchr*/
printf("ABCDEF(D) -> %s\n", my_strchr("ABCDEF", 'D'));
printf("ABCDEF(G) -> %s\n", my_strchr("ABCDEF", 'G'));
/*strstr*/
return 0;
}#include <stdio.h>
#include <string.h>
void makeString(char **str, char *buf, int size)
{
if(*str != NULL)
free(*str);
*str = malloc(sizeof(char) * (size+1));
strcpy(*str, buf);
}
int main()
{
int max=0, min=9999999, len=0;
char *maxString=NULL, *minString=NULL;
char buf[255];
while(gets(buf) != NULL) {
len = strlen(buf);
buf[len] = '\0';
if(max < len) {
makeString(&maxString, buf, len);
max = len;
}
if(min > len) {
makeString(&minString, buf, len);
min = len;
}
}
printf("\t\t<< 결과 >>\n\n");
printf("가장 긴 문자열: %s\n", maxString);
printf("가장 짧은 문자열: %s\n", minString);
free(maxString);
free(minString);
return 0;
}