Skip to content

Instantly share code, notes, and snippets.

@frankie-yanfeng
Created January 10, 2020 02:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frankie-yanfeng/5ef26beac7b426988fea7b425a86edbf to your computer and use it in GitHub Desktop.
Save frankie-yanfeng/5ef26beac7b426988fea7b425a86edbf to your computer and use it in GitHub Desktop.
Variadic function
#include <stdio.h>
#include <stdarg.h>
void myprintf(const char *format, ...)
{
va_list ap;
char c;
va_start(ap, format);
while ( (c = *format) ) {
format++;
switch(c) {
case 'c': {/* char is promoted to int when passed through '...' */
char ch = va_arg(ap, int);
putchar(ch);
break;
}
case 's': {
char *p = va_arg(ap, char *);
fputs(p, stdout);
break;
}
default:
putchar(c);
}
}
va_end(ap);
}
int main(void)
{
myprintf("c\ts\n", '1', "hello");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment