Skip to content

Commit b363897

Browse files
committed
fixed brainfuck issue and added itoa_base
1 parent 55a0d4f commit b363897

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

lvl5/brainfuck/brainfuck.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,8 @@ int main(int argc, char *argv[])
243243
// fuckme(argv[2]);
244244
if (argc == 2)
245245
fuckme(argv[1]);
246-
write(1, "\n", 1);
246+
else
247+
write(1, "\n", 1);
247248
return (0);
248249
}
249250

lvl5/ft_itoa_base/ft_itoa_base.c

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include <stdlib.h>
2+
3+
int count_digits(unsigned int n, int base)
4+
{
5+
int len = 0;
6+
if (n == 0)
7+
len++;
8+
while (n > 0)
9+
{
10+
len++;
11+
n /= base;
12+
}
13+
return (len);
14+
}
15+
16+
char *ft_itoa_base(int value, int base)
17+
{
18+
char digit[16] = "0123456789ABCEDF";
19+
unsigned int n = (value < 0 && base == 10) ? -value : value;
20+
int len = count_digits(n, base);
21+
char *out = malloc(sizeof(char) * (len + 1));
22+
23+
out[len] = '\0';
24+
if (base == 10 && value < 0)
25+
len++;
26+
if (value == 0)
27+
out[0] = '0';
28+
if (value < 0 && base == 10)
29+
out[0] = '-';
30+
31+
int i = len;
32+
int digit_index;
33+
while (n != 0)
34+
{
35+
i--;
36+
digit_index = n % base;
37+
out[i] = digit[digit_index];
38+
n /= base;
39+
}
40+
return (out);
41+
}
42+
43+
char *ft_itoa(int nbr)
44+
{
45+
return (ft_itoa_base(nbr, 10));
46+
}
47+
48+
#ifdef TEST
49+
50+
#include <printf.h>
51+
#include <limits.h>
52+
53+
int main(void)
54+
{
55+
int value = 0;
56+
int base = 16;
57+
58+
printf("%s\n", ft_itoa_base(value, base));
59+
printf("%s\n", ft_itoa(value));
60+
return (0);
61+
}
62+
63+
#endif

0 commit comments

Comments
 (0)