Я пытаюсь написать функцию memccpy () самостоятельно. Я назову это ft_memccpy (). Я нашел в Интернете основные функции тестирования, и меня смущают две функции тестирования. Первая тестовая функция работает нормально с моим ft_memccpy (), но вторая тестовая функция - нет. И я не понимаю, потому что единственное различие между test1 и test2 состоит в том, что \ 200 изменяется на 0600.
Вот ft_memccpy, который я сделал:
void *ft_memccpy(void *dest, const void *src, int c, size_t n)
{
char *dptr;
char *sptr;
dptr = (char *)dest;
sptr = (char *)src;
while (n && *dptr && *sptr)
{
*dptr = *sptr;
if (*sptr == c)
{
return (++dptr);
}
dptr++;
sptr++;
n--;
}
return (0);
}
Вот первая тестовая функция (test1), где моя функция работает нормально:
#include "ft_memccpy.c"
#include <stdio.h>
#include <string.h>
int main()
{
char dest[] = "abcdefghijklmnopqrstuvwxyz";
char dest2[] = "abcdefghijklmnopqrstuvwxyz";
char src[] = "string with\200inside !";
int n = 21;
memccpy(dest2, src, '\200', n);
printf("%s\n", dest2);
ft_memccpy(dest, src, '\200', n);
printf("%s\n", dest);
}
и вот второй тест (test2), где моя функция не работает:
#include "ft_memccpy.c"
#include <stdio.h>
#include <string.h>
int main()
{
char dest[] = "abcdefghijklmnopqrstuvwxyz";
char dest2[] = "abcdefghijklmnopqrstuvwxyz";
char src[] = "string with\200inside !";
int n = 21;
memccpy(dest2, src, 0600, n);
printf("%s\n", dest2);
ft_memccpy(dest, src, 0600, n);
printf("%s\n", dest);
}
Я выяснил, что 0600 восьмерично и должно быть 384 в десятичном виде, но 384 не в коде ascii правильно? Единственное, что я получаю около 0600, это «chmod 0600», который не выглядит актуальным.