#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>	
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>

//char* strrchr(char* str1, char target) //strrchr : 문자열을 뒤에서 찾는 것.
//{
//	char* firstchr = str1; // 첫글자를 저장한다.
//
//	//if (*str1 == target) // 첫글자가 찾는 글자일때를 했는데 없어도 된다.
//	//{						// 첫글자부터 반환을 해줘야 되는지 알았는데, 뒤에서 부터 찾는함수이므로 없어도 된다.
//	//	return str1; //str1 반환
//	//}
//
//	while (*str1 != '\\0') //str1이 NULL 값이 아닐경우
//	{
//		str1++; //str1 증감 -> str1 값의 끝까지 감.
//	}
//
//	if (*str1 == target) //마지막글자가 찾는 글자일 때,
//	{
//		return str1; //str1 값을 반환한다.
//	}
//
//	while (str1 != firstchr) // 위의 조건을 만족하지 않을 때 마지막부터 처음까지 반복
//	{
//		if (str1 == target) //찾는 글자일 경우
//		{
//			return str1; //str1 값을 반환한다.
//		}
//		str1--; //아닐 경우 str1 값을 1칸만큼 앞으로 옮긴다.
//	}
//
//	return NULL; //찾는글자가 없다면 NULL값을 반환한다.
//}
//
//int main()
//{
//	char string[100] = "i love kimchi bro";
//	char target = 'i';
//
//	char* returnSave = strrchr(string, target);
//	printf("%s", returnSave);
//}

/*
//문자열 맨 끝까지 간 후
int len = 0;
while (*str1 != '\\0')
{
++str1;
++len;
}
--str1;

//찾아가면 됨
for (int i = len - 1; i >= 0; ++i)
{
if (*str1 == targetchr)
{
return str1;
}
--str1;
}
return NULL;
*/

// myprintf(3, 1, 2, 3) -> My Variadic Function : 1, 2, 3
// "My Variadic Function : ~ "
//void/*(반환타입)*/myprintf(int count/*int타입의 값을 하나 받는다).*/, .../*(가변인자)*/)
//{
//	va_list args;
//	va_start(args, count);
//
//	printf("My Varidic Function :");
//	for (int i = 0; i < count; ++i)
//	{
//		int number = va_arg(args, int); //가변 인자로부터 int 타입의 데이터를 하나씩 가져온다.
//		printf(" %d,", number);
//	}
//	va_end(args);
//}
//
//int main(void)
//{
//	myprintf(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//}
// <summary>
// printf와 유사하게 동작하나 기능이 제한됨.
// %d / %c / %f / %s
// </summary>
// <param name= "format">형식 문자열</param>
// <param name=">가변 인자값<param>

/*
void myprintf(const int		);

int main(void)
{
my printf("Hello My Printf : %d %c %f %s", 10, 'A', 3.14f, "Hello");
// Output : Hello My Printf : 10 , A, 3.14000, Hello

return 0;


}
*/
void simple_printf(char* format, ...)
{
va_list args;
va_start(args, format);
char *word;

for (int i = 0; *format != '%'; ++i)
{
	putchar(*format );
	format++;

}

while (*format != '\\\\0')
{
	if (*format == 'd')
	{
		int i = va_arg(args, int);
		printf("10 ");
	}
	else if (*format == 'c')
	{
		int c = va_arg(args, int);
		putchar((char)c);
	}
	else if (*format == 's')
	{
		for (word = va_arg(args, char*); *word; word++)
			putchar(*word);
	}
	++format;
}
va_end(args);

}

int main(void)
{
simple_printf("Hello My Printf : %d, %c, %s",10,'A'," Hello");
return 0;
}