feat: 5-5!

This commit is contained in:
Flinner Yuu 2022-07-18 08:51:40 +03:00
parent 212ff929fa
commit 4b4edf840f
Signed by: flinner
GPG Key ID: 95CE0DA7F0E58CA6
1 changed files with 51 additions and 0 deletions

51
chapter-5/5-5.c Normal file
View File

@ -0,0 +1,51 @@
/* Exercise 5-5. Write versions of the library functions strncpy,
strncat, and strncmp, which operate on at most the first n
characters of their argument strings. For example,
strncpy(s,t,n) copies at most n characters of t to s. Full
descriptions are in Appendix B. */
#include <stdio.h>
void my_strncpy(char *s, char *t, int n) {
while (n-- > 0 && (*s++ = *t++))
;
}
void my_strncat(char *s, char *t, int n) {
while (*s)
s++;
while (n-- > 0 && (*s++ = *t++))
;
}
int my_strncmp(char *s, char *t, int n) {
while (n-- > 0 && (*s == *t)) {
s++;
t++;
};
return *s - *t;
}
int main() {
char s1[30] = "Hello, Gentlemen!";
char t1[30] = "1234567890:D";
// this is for printf
char *s_old = "Hello, Gentlemen!";
my_strncpy(s1, t1, 5);
printf("strncpy(s = %s,t = %s, n = %d ) = %s \n", s_old, t1, 5, s1);
//
char a[30] = "Hello, ";
char *b = "World!lol, not included";
my_strncat(a, b, 6);
printf("%s\n", a);
// tested on more cases.
char *smol = "123445";
char *larg = "123455";
printf("strncmp(s = %s,t = %s, n = %d ) = %d \n", smol, larg, 5,
my_strncmp(smol, larg, 5));
return 0;
}