File: prntf.c

package info (click to toggle)
cmix 2.0.12-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 6,924 kB
  • ctags: 6,063
  • sloc: cpp: 27,155; ansic: 11,923; sh: 3,000; exp: 2,270; yacc: 1,724; makefile: 1,251; lex: 488; perl: 278
file content (72 lines) | stat: -rw-r--r-- 1,134 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>

void mini_printf(char *, int *);
void putint(int);
int power(int, int);
int goal(int, int);

#define MAXDIGITS 31

void mini_printf(char *fmt, int *values)
{
  int i, j;
  /* Parse the format string */
  for (i = j = 0; fmt[i] != '\0'; i++) {
    if (fmt[i] != '%')
      putchar(fmt[i]);
    else {
      i++;
      switch (fmt[i]) {
      case 'd':
	/* %d: output the next int */
	putint(values[j]);
	j++;
	break;
      case '%':
	putchar('%');
	break;
      default:
	putchar(fmt[i]);
	break;
      }
    }
  }
}

/* output integer i as string to stdout */
void putint(int i) {
  int j;
  char buf[MAXDIGITS];
  if (i == 0) { putchar('0'); return; };
  if (i <  0) { putchar('-'); i = -i; };
  if (0) j = i; /* force j dynamic, if i is */
  j = 0;
  while (i > 0) {
    buf[j++] = i % 10 + '0';
    i /= 10;
  }
  while (j > 0) putchar(buf[--j]);
  }
  

/* Return the nth power of x */
int power(int x, int n)
{
  int pow;

  pow = 1;
  while (n > 0) {
    pow = pow * x;
    n--;
  }
  return pow;
}

int goal(int x, int n)
{
  int v[2];

  v[0] = power(x, n);
  mini_printf("Power = %d\n", v);
  return 0;
}