feat: 5-5!
This commit is contained in:
parent
212ff929fa
commit
4b4edf840f
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue