Skip to content

Commit c1d8804

Browse files
author
root
committed
afternoon-commit-06-11-2020
1 parent 5c35f82 commit c1d8804

File tree

5 files changed

+70
-24
lines changed

5 files changed

+70
-24
lines changed

variable_argu/myprintf.c

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include <stdio.h>
2+
#include <stdarg.h>
3+
4+
extern char *itoa(int, char *, int);
5+
6+
void myprintf(const char *fmt, ...)
7+
{
8+
const char *p;
9+
va_list argp;
10+
int i;
11+
char *s;
12+
char fmtbuf[256];
13+
14+
va_start(argp, fmt);
15+
16+
for(p = fmt; *p != '\0'; p++)
17+
{
18+
if(*p != '%')
19+
{
20+
putchar(*p);
21+
continue;
22+
}
23+
24+
switch(*++p)
25+
{
26+
case 'c':
27+
i = va_arg(argp, int);
28+
putchar(i);
29+
break;
30+
31+
case 'd':
32+
i = va_arg(argp, int);
33+
s = itoa(i, fmtbuf, 10);
34+
fputs(s, stdout);
35+
break;
36+
37+
case 's':
38+
s = va_arg(argp, char *);
39+
fputs(s, stdout);
40+
break;
41+
42+
case 'x':
43+
i = va_arg(argp, int);
44+
s = itoa(i, fmtbuf, 16);
45+
fputs(s, stdout);
46+
break;
47+
48+
case '%':
49+
putchar('%');
50+
break;
51+
}
52+
}
53+
54+
va_end(argp);
55+
}

variable_argu/var-arg.c

Whitespace-only changes.

variable_argu/var-main.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#include<stdio.h>
2+
#include "myprintf.c"
3+
void myprintf(const char *fmt, ...);
4+
int main(void)
5+
{
6+
myprintf("%s", 'S');
7+
}

variable_argu/var_no.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,19 @@ int average(int num, ...)
1212
int sum = 0, i;
1313

1414
va_start(valist, num);
15-
for (i = 0; i < num; i++)
15+
16+
for (i = 0; i < num; i++)
17+
{
1618
sum += va_arg(valist, int);
17-
19+
}
1820
va_end(valist);
1921

20-
return sum / num;
22+
return sum ;
2123
}
2224

2325
int main()
2426
{
25-
printf("Average of {2, 3, 4} = %d\n", average(2, 3, 4));
26-
printf("Average of {3, 5, 10, 15} = %d\n", average(3, 5, 10, 15));
27+
printf("Average = %d\n", average(2, 3, 4));
28+
printf("Average = %d\n", average(3, 5, 10, 15));
2729
return 0;
28-
}
30+
}

variable_argu/variable.c

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)