Skip to content

Commit 033ebc5

Browse files
committed
fix/ ftsnprinft.c make error
1 parent 2b15b5a commit 033ebc5

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

libft/ft_snprintf.c

+16-16
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,38 @@
33
/* ::: :::::::: */
44
/* ft_snprintf.c :+: :+: :+: */
55
/* +:+ +:+ +:+ */
6-
/* By: jidler <jidler@student.42tokyo.jp> +#+ +:+ +#+ */
6+
/* By: pchung <pchung@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2025/03/09 10:34:37 by jidler #+# #+# */
9-
/* Updated: 2025/03/09 10:45:25 by jidler ### ########.fr */
9+
/* Updated: 2025/03/09 14:06:22 by pchung ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include <stdarg.h>
14+
#include <stddef.h>
1415
#include <stdio.h>
1516
#include <stdlib.h>
1617
#include <unistd.h>
17-
#include <stdarg.h>
18-
#include <stddef.h>
19-
#include <stdio.h>
2018

21-
int handle_format(char specifier, va_list *args, char *buffer)
19+
int handle_format(char specifier, va_list args, char *buffer,
20+
size_t buffer_size)
2221
{
2322
int len;
2423
const char *s;
2524
char c;
2625

2726
len = 0;
2827
if (specifier == 'd')
29-
len = snprintf(buffer, 64, "%d", va_arg(*args, int));
28+
len = snprintf(buffer, buffer_size, "%d", va_arg(args, int));
3029
else if (specifier == 's')
3130
{
32-
s = va_arg(*args, const char *);
33-
len = snprintf(buffer, 64, "%s", s);
31+
s = va_arg(args, const char *);
32+
len = snprintf(buffer, buffer_size, "%s", s);
3433
}
3534
else if (specifier == 'c')
3635
{
37-
c = (char)va_arg(*args, int);
38-
len = snprintf(buffer, 64, "%c", c);
36+
c = (char)va_arg(args, int);
37+
len = snprintf(buffer, buffer_size, "%c", c);
3938
}
4039
else
4140
{
@@ -59,16 +58,16 @@ void append_buffer(char *str, size_t *j, size_t size, char *buffer)
5958
}
6059
}
6160

62-
size_t process_format(const char *format, size_t *i,
63-
va_list *args, char *buffer)
61+
size_t process_format(const char *format, size_t *i, va_list args,
62+
char *buffer, size_t buffer_size)
6463
{
6564
int len;
6665

6766
len = 0;
6867
if (format[*i] == '%' && format[*i + 1])
6968
{
7069
(*i)++;
71-
len = handle_format(format[*i], args, buffer);
70+
len = handle_format(format[*i], args, buffer, buffer_size);
7271
}
7372
else
7473
{
@@ -91,9 +90,10 @@ int ft_vsnprintf(char *str, size_t size, const char *format, va_list args)
9190
len = 0;
9291
while (format[i])
9392
{
94-
len += process_format(format, &i, &args, buffer);
93+
len += process_format(format, &i, args, buffer, sizeof(buffer));
9594
append_buffer(str, &j, size, buffer);
96-
i++;
95+
if (format[i] != '%')
96+
i++;
9797
}
9898
if (size > 0)
9999
str[j] = '\0';

0 commit comments

Comments
 (0)