Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
- #include <conio.h>
- int number_size(int n)
- {
- int i;
- if (n < 0)
- n = -n;
- while (n > 0) {
- n = n/10;
- i++;
- }
- return i;
- }
- void my_snprintf(char *buffer, size_t count, const char *format, ...)
- {
- int quantity = 0;
- for (int i = 0; format[i] != '\0'; i++)
- if (format[i] == '%')
- quantity++;
- va_list vl;
- va_start(vl, format);
- int j = 0;
- int k = 0;
- for (j; j < count; j++)
- {
- if (format[j] == '%')
- {
- j++;
- if (format[j] == 'd')
- {
- int num = va_arg(vl, int);
- int numberSize = number_size(num);
- while (numberSize > 0)
- {
- int i = numberSize - 1;
- int pw = 1;
- while (i > 0)
- {
- pw = pw * 10;
- i--;
- }
- buffer[k] = (((num / pw)%10) + '0');
- //printf("%d", (num / pw)%10);
- numberSize--;
- k++;
- }
- }
- else if (format[j] == 'c')
- {
- char name = va_arg(vl, int);
- buffer[k] = name;
- k++;
- }
- }
- else
- {
- buffer[k] = format[j];
- k++;
- }
- }
- va_end(vl);
- }
- void main()
- {
- char buffer [100];
- my_snprintf(buffer, 100, "Radiohead released %d albums with more than %d songs%c", 9, 200, '.');
- puts(buffer);
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement