diff options
Diffstat (limited to '5.5.c')
-rw-r--r-- | 5.5.c | 54 |
1 files changed, 54 insertions, 0 deletions
@@ -0,0 +1,54 @@ +#include <stdio.h> + +char *strncpy(char to[], const char from[], int till); +char *strncat(char to[], const char from[], int till); +int strncmp_sneed(const char str1[], const char str2[], int till); + +int +main(void) +{ + char str[10]; + printf("%s\n", strncpy(str, "gnu linux", 3)); + + printf("%s\n", strncat(str, " linux", 6)); + + if (!strncmp_sneed("seed", "seed feed", 3)) + printf("suckses\n"); + + return 0; +} + +char *strncpy(char to[], const char from[], int till) +{ + if (from[till] != '\0') + to[till+1] = '\0'; + + while (till--) + *(to+till) = *(from+till); + + return to; +} + +char *strncat(char to[], const char from[], int till) +{ + char *to_og = to; + + while (*to) + ++to; + + while (till--) + *(to+till) = *(from+till); + + return to_og; +} + +int +strncmp_sneed(const char str1[], const char str2[], int till) +{ + int count; + + for (count = 0, --till; count < till && *(str1+count) == *(str2+count); count++) + ; + + return *(str1+count) - *(str2+count); +} |