#include <stdio.h>
#include <assert.h>
#include <string.h>
unsigned int len(char* str)
{
int i;
i = 0;
while (str[i] != '\0')
{
i++;
}
return i;
}
unsigned int cal_i_len(unsigned int nb, unsigned int src_len)
{
if (nb > src_len)
{
return src_len;
}
return nb;
}
char* ft_strncat(char* dest, char* src, unsigned int nb)
{
unsigned int i;
unsigned int i_len;
unsigned int src_len;
unsigned int dest_len;
src_len = len(src);
dest_len = len(dest);
i_len = cal_i_len(nb, src_len);
i = 0;
while (i < i_len)
{
dest[dest_len + i] = src[i];
i++;
}
dest[dest_len + i] = '\0';
return dest;
}
int main(void)
{
// Test Case 1: Normal concatenation
char dest1[20] = "Hello, ";
char src1[] = "world!";
size_t n1 = 6; // Maximum 6 characters from src1
ft_strncat(dest1, src1, n1);
assert(strcmp(dest1, "Hello, world!") == 0);
// Test Case 2: Source string completely fits
char dest2[15] = "Foo";
char src2[] = "Bar";
size_t n2 = 3; // Maximum 3 characters from src2
ft_strncat(dest2, src2, n2);
assert(strcmp(dest2, "FooBar") == 0);
// Test Case 3: Buffer size exactly matches destination length
char dest3[10] = "Hello";
char src3[] = "World";
size_t n3 = 1; // Maximum 1 character from src3
ft_strncat(dest3, src3, n3);
assert(strcmp(dest3, "HelloW") == 0);
// Test Case 4: Buffer size too small to hold concatenated string
char dest4[10] = "Hello";
char src4[] = "World";
size_t n4 = 4; // Maximum 4 characters from src4
ft_strncat(dest4, src4, n4);
assert(strcmp(dest4, "HelloWorl") == 0);
// Test Case 5: Empty source string
char dest5[10] = "Test";
char src5[] = "";
size_t n5 = 3; // Maximum 3 characters from src5
ft_strncat(dest5, src5, n5);
assert(strcmp(dest5, "Test") == 0);
// Test Case 6: Empty destination string
char dest6[10] = "";
char src6[] = "Test";
size_t n6 = 4; // Maximum 4 characters from src6
ft_strncat(dest6, src6, n6);
assert(strcmp(dest6, "Test") == 0);
// Test Case 7: Empty destination and source strings
char dest7[10] = "";
char src7[] = "";
size_t n7 = 2; // Maximum 2 characters from src7
ft_strncat(dest7, src7, n7);
assert(strcmp(dest7, "") == 0);
// Test Case 8: Destination buffer size is zero
char dest8[10] = "Hello";
char src8[] = "World";
size_t n8 = 0; // Maximum 0 characters from src8
ft_strncat(dest8, src8, n8);
assert(strcmp(dest8, "Hello") == 0); // No change should happen
printf("All tests passed.\n");
return 0;
}
To embed this program on your website, copy the following code and paste it into your website's HTML: