-
Notifications
You must be signed in to change notification settings - Fork 0
/
wrt2.c
129 lines (107 loc) · 2.18 KB
/
wrt2.c
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "main.h"
/**
* stringCopy - Copies a string from source to destination.
* @destination: The destination buffer.
* @source: The source string.
* Return: Pointer to the destination buffer.
*/
char *stringCopy(char *destination, const char *source)
{
int index = 0;
if (destination == source || source == NULL)
return (destination);
while (source[index])
{
destination[index] = source[index];
index++;
}
destination[index] = '\0';
return (destination);
}
/**
* duplicate_string - Duplicates a string.
* @str: The string to duplicate.
*
* Return: Pointer to the duplicated string.
*/
char *duplicate_string(const char *str)
{
int length = 0;
char *duplicate;
if (str == NULL)
return (NULL);
while (*str++)
length++;
duplicate = malloc(sizeof(char) * (length + 1));
if (!duplicate)
return (NULL);
for (length++; length--;)
duplicate[length] = *--str;
return (duplicate);
}
/**
* print_string - Prints a string to the standard output.
* @str: The string to be printed.
*
* Return: Nothing.
*/
void print_string(char *str)
{
int index = 0;
if (!str)
return;
while (str[index] != '\0')
{
write(1, &str[index], 1);
index++;
}
}
/**
* write_character - Writes a character to the standard output buffer.
* @character: The character to write.
*
* Return: On success, returns 1.
* On error, -1 is returned, and errno is set appropriately.
*/
int write_character(char character)
{
static int buffer_index;
static char output_buffer[BUF_SIZE];
if (character == FLUSH_BUFFER || buffer_index >= BUF_SIZE)
{
write(1, output_buffer, buffer_index);
buffer_index = 0;
}
if (character != FLUSH_BUFFER)
output_buffer[buffer_index++] = character;
return (1);
}
/*=============USED===============================*/
/**
**_strncpy - copies a string
*@dest: the destination string to be copied to
*@src: the source string
*@n: the amount of characters to be copied
*Return: the concatenated string
*/
char *_strncpy(char *dest, char *src, int n)
{
int i, j;
char *s = dest;
i = 0;
while (src[i] != '\0' && i < n - 1)
{
dest[i] = src[i];
i++;
}
if (i < n)
{
j = i;
while (j < n)
{
dest[j] = '\0';
j++;
}
}
return (s);
}