Can you write a function similar to scanf?

1 answer

Answer

1182265

2026-05-07 13:00

+ Follow

//program for myprintf using variable arguments

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <stdarg.h>

int compare(const void * var1,const void * var2)

{

if(*(int *)var1 > *(int *)var2)

{

return(0);

}

else{

return(1);

}

}

int myPrintf(const char * output ,...)

{

va_list arguments;

int stringlength,stringIndx;

char *s;

int d;

char c;

stringlength = strlen(output);

va_start(arguments,output);

for(stringIndx = 0;stringIndx < stringlength;stringIndx++)

{

if(output[stringIndx] == '%')

{

stringIndx++;

switch(output[stringIndx])

{

case 's': /* string */

s = va_arg(arguments, char *);

printf("%s\n", s);

break;

case 'd': /* int */

d = va_arg(arguments, int);

printf("%d\n", d);

break;

case 'c': /* char */

default:

/* need a cast here since va_arg only

takes fully promoted types */

c = (char) va_arg(arguments, char);

printf("%c\n", c);

break;

}

}

else{

printf("%c",output[stringIndx]);

}

}

}

void main()

{

unsigned int au32Nos[10] = {32,44.,55,66,11,8,9,7,9,10};

qsort(au32Nos,10,4,compare);

myPrintf(" %d %d %d %d %d %d %d %d %d %d",au32Nos[0],au32Nos[1],au32Nos[2],au32Nos[3],au32Nos[4],au32Nos[5],au32Nos[6],au32Nos[7],au32Nos[8],au32Nos[9]);

}

ReportLike(0ShareFavorite

Copyright © 2026 eLLeNow.com All Rights Reserved.