#include <unistd.h>
#include <stdarg.h>

int printchar(char c){
    write(1, &c, 1);
    return 1;
}

int str_len(char * str){
    int counter = 0;
    while(str[counter] != '\0'){
        counter++;
    }
    
    return counter;
}

int printstring(char *str){
    int len = str_len(str);
    
    write(1, str, len);
    
    return len;
}

int	handle_flag(va_list args, char flag)
{
	if (flag == 'c')
		return (printchar((char)va_arg(args, int)));
	if (flag == 's')
		return (printstring(va_arg(args, char *)));
	if (flag == '%')
		return (printchar('%'));
	return (0);
}

int myprintf(const char * str, ...){
    va_list args;
    int counter;
    
    va_start(args, str);
    counter = 0;
    while(*str != '\0'){
        if (*str == '%'){
            str++;
            counter += handle_flag(args, *str);
        }
        else {
            counter += printchar(*str);
        }
        str++;
    }
    va_end(args);
    
    return counter;
}

int main() {
    char * str = "%cello %s!%%";
    myprintf(str, 'H', "world");
 
    return 0;
}



Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: