1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
/**
* @file libft.h
* @brief Reimplementations of standard C library functions.
*
* Every function mirrors its libc counterpart unless noted otherwise.
* Functions that operate on raw memory interpret bytes as unsigned char.
* BSD extensions (strlcpy, strlcat, strnstr) follow the OpenBSD semantics.
*/
#ifndef LIBFT_H
#define LIBFT_H
#include <stddef.h>
/* ======================================
* Character classification & conversion
* ====================================== */
/** @brief Return non-zero if @p c is an alphabetic letter. */
int ft_isalpha (int c);
/** @brief Return non-zero if @p c is a decimal digit. */
int ft_isdigit (int c);
/** @brief Return non-zero if @p c is alphanumeric. */
int ft_isalnum (int c);
/** @brief Return non-zero if @p c is a 7-bit ASCII value. */
int ft_isascii (int c);
/** @brief Return non-zero if @p c is a printable character. */
int ft_isprint (int c);
/** @brief Convert @p c to uppercase if it is a lowercase letter. */
int ft_toupper (int c);
/** @brief Convert @p c to lowercase if it is an uppercase letter. */
int ft_tolower (int c);
/* ======================================
* String examination
* ====================================== */
/** @brief Return the length of the string @p s. */
size_t ft_strlen (const char *s);
/**
* @brief Compare at most @p n bytes of @p s1 and @p s2.
* @return Negative, zero, or positive integer.
*/
int ft_strncmp (const char *s1, const char *s2, size_t n);
/** @brief Return a pointer to the first occurrence of @p c in @p s. */
char *ft_strchr (const char *s, int c);
/** @brief Return a pointer to the last occurrence of @p c in @p s. */
char *ft_strrchr (const char *s, int c);
/**
* @brief Locate @p little in @p big, searching at most @p len bytes.
* @note BSD extension — not available in glibc.
*/
char *ft_strnstr (const char *big, const char *little, size_t len);
/** @brief Convert the initial portion of @p nptr to int. */
int ft_atoi (const char *nptr);
/* ======================================
* String manipulation
* ====================================== */
/**
* @brief Copy @p src into @p dst, NUL-terminating the result.
* @return Length of @p src.
* @note BSD extension — not available in glibc.
*/
size_t ft_strlcpy (char *dst, const char *src, size_t size);
/**
* @brief Append @p src to @p dst, NUL-terminating the result.
* @return Intended total length (dst_len + src_len).
* @note BSD extension — not available in glibc.
*/
size_t ft_strlcat (char *dst, const char *src, size_t size);
/** @brief Return a malloc'd duplicate of @p s. */
char *ft_strdup (const char *s);
/* ======================================
* Memory operations
* ====================================== */
/** @brief Fill @p n bytes of @p s with the byte @p c. */
void *ft_memset (void *s, int c, size_t n);
/** @brief Zero @p n bytes starting at @p s. */
void ft_bzero (void *s, size_t n);
/** @brief Copy @p n bytes from @p src to @p dest (no overlap). */
void *ft_memcpy (void *dest, const void *src, size_t n);
/** @brief Copy @p n bytes from @p src to @p dest (overlap-safe). */
void *ft_memmove (void *dest, const void *src, size_t n);
/** @brief Scan @p n bytes of @p s for the byte @p c. */
void *ft_memchr (const void *s, int c, size_t n);
/**
* @brief Compare @p n bytes of @p s1 and @p s2.
* @return Negative, zero, or positive integer.
*/
int ft_memcmp (const void *s1, const void *s2, size_t n);
/* ======================================
* Memory allocation
* ====================================== */
/**
* @brief Allocate zeroed memory for @p nmemb elements of @p size bytes.
* @return NULL on overflow or allocation failure.
*/
void *ft_calloc (size_t nmemb, size_t size);
#endif
|