Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ** EPITECH PROJECT, 2017
- ** my_printf
- ** File description:
- ** my_printf
- */
- #include <stdarg.h>
- int my_putstr(char const *str)
- {
- int i = 0;
- while (str[i] != '\0') {
- my_putchar(str[i]);
- i = i + 1;
- }
- }
- int my_putnbr(int nbr)
- {
- int modulo = 0;
- if (nbr <= 9 && nbr >= 0)
- my_putchar(nbr + '0');
- if (nbr < 0) {
- my_putchar('-');
- nbr = nbr * (-1);
- if (nbr <= 9 && nbr >= 0)
- my_putnbr(nbr);
- }
- if (nbr > 9) {
- modulo = nbr % 10;
- my_putnbr(nbr / 10);
- my_putchar(modulo + '0');
- }
- }
- void my_putchar(char c)
- {
- write(1, &c, 1);
- }
- typedef struct pair_char_fptr
- {
- char c;
- int (*pointeur_fonction)(va_list);
- } pair_char_fptr;
- pair_char_fptr myput[3] = { {'c', &my_putchar},
- {'d', &my_putnbr},
- {'s', &my_putstr} };
- int my_printf(char *str, ...)
- {
- va_list arguments;
- va_start(arguments, str);
- int i = 0;
- while(str[i])
- {
- if (str[i] == '%') {
- i++;
- for(int j=0; j<3; j++)
- {
- if(str[i] == myput[j].c)
- myput[j].pointeur_fonction(va_arg(arguments, int));
- }
- }
- i++;
- }
- va_end(arguments);
- }
- int main()
- {
- my_printf("%s", "Ca marche!");
- return (0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement