C언어..

#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;
}
c언어/c_ds.txt · 마지막 수정: 2008/07/25 14:42 작성자 miracle
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0