124 lines
1.8 KiB
C
124 lines
1.8 KiB
C
#include "main.h"
|
|
/**
|
|
* printf_37 - prints the char 37.
|
|
* Return: 1.
|
|
*/
|
|
int printf_37(void)
|
|
{
|
|
_putchar(37);
|
|
return (1);
|
|
}
|
|
|
|
/**
|
|
* printf_rot13 - OT13 place into buffer
|
|
* @args: va_arg where is allocated printf arguments
|
|
* Return: counter
|
|
*/
|
|
int printf_rot13(va_list args)
|
|
{
|
|
int i, j, counter = 0;
|
|
int k = 0;
|
|
char *s = va_arg(args, char*);
|
|
/* basic alphabet */
|
|
char alpha[] = {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"};
|
|
/* shifted by 13 */
|
|
char beta[] = {"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"};
|
|
|
|
if (s == NULL)
|
|
s = "(null)";
|
|
for (i = 0; s[i]; i++)
|
|
{
|
|
k = 0;
|
|
for (j = 0; alpha[j] && !k; j++)
|
|
{
|
|
if (s[i] == alpha[j])
|
|
{
|
|
_putchar(beta[j]);
|
|
counter++;
|
|
k = 1;
|
|
}
|
|
}
|
|
if (!k)
|
|
{
|
|
_putchar(s[i]);
|
|
counter++;
|
|
}
|
|
}
|
|
return (counter);
|
|
}
|
|
|
|
/**
|
|
* printf_pointer - prints an hexgecimal number.
|
|
* @val: arguments.
|
|
* Return: counter.
|
|
*/
|
|
int printf_pointer(va_list val)
|
|
{
|
|
void *p;
|
|
char *s = "(nil)";
|
|
long int a;
|
|
int b;
|
|
int i;
|
|
|
|
p = va_arg(val, void*);
|
|
if (p == NULL)
|
|
{
|
|
for (i = 0; s[i] != '\0'; i++)
|
|
{
|
|
_putchar(s[i]);
|
|
}
|
|
return (i);
|
|
}
|
|
|
|
a = (unsigned long int)p;
|
|
_putchar('0');
|
|
_putchar('x');
|
|
b = printf_hex_aux(a);
|
|
return (b + 2);
|
|
}
|
|
|
|
/**
|
|
* printf_int - prints integer
|
|
* @args: argument to print
|
|
* Return: number of characters printed
|
|
*/
|
|
|
|
int printf_int(va_list args)
|
|
{
|
|
int n = va_arg(args, int);
|
|
int num, last = n % 10, digit, exp = 1;
|
|
int i = 1;
|
|
|
|
n = n / 10;
|
|
num = n;
|
|
|
|
if (last < 0)
|
|
{
|
|
_putchar('-');
|
|
num = -num;
|
|
n = -n;
|
|
last = -last;
|
|
i++;
|
|
}
|
|
if (num > 0)
|
|
{
|
|
while (num / 10 != 0)
|
|
{
|
|
exp = exp * 10;
|
|
num = num / 10;
|
|
}
|
|
num = n;
|
|
while (exp > 0)
|
|
{
|
|
digit = num / exp;
|
|
_putchar(digit + '0');
|
|
num = num - (digit * exp);
|
|
exp = exp / 10;
|
|
i++;
|
|
}
|
|
}
|
|
_putchar(last + '0');
|
|
|
|
return (i);
|
|
}
|