In: Computer Science
Program in C:
The strncpy(s1,s2,n) function copies exactly n characters from s2 to s1, truncating s2 or padding it with extra null characters as necessary. The target string may not be null-terminated if the length of s2 is n or more. The function returns s1. Write your own version of this function. Test the function in a complete program that uses a loop to provide input values for feeding to the function.
#include <stdio.h> #define LIMIT 50//w w w . j a va 2 s . com char * mystrcpy(char *s1, char *s2, int n); char * get(char *string, int n); void clear_string(char * string, int n); int main(void) { char s1[LIMIT]; char s2[LIMIT]; int n; printf("Enter a string to copy: "); get(s2, LIMIT); while (s2[0] != '\0'){ printf("How many characters do you want to copy? (maximum %d) ", LIMIT); scanf("%d", &n); while (getchar() != '\n') continue; if (n > LIMIT) n = LIMIT; printf("Original string: %s\n", s2); mystrcpy(s1, s2, n); printf("Copy: %s\n", s1); clear_string(s1, LIMIT); printf("Enter a string to copy (empty line to quit): "); get(s2, LIMIT); } puts("Bye"); return 0; } // copy n characters from s2 to s1, if length of s2 is n or greater then s1 may not be null terminated char * mystrcpy(char *s1, char *s2, int n){ int i = 0; // copy n characters or until null char while (s2[i] != '\0' && i < n){ s1[i] = s2[i]; i++; } // if i < n pad s1 with null character while (i < n) { s1[i] = '\0'; i++; } return s1; } // wrapper for fgets that replaces first newline with null char * get(char *string, int n){ char *return_value = fgets(string, n, stdin); while (*string != '\0'){ if (*string == '\n'){ *string = '\0'; break; } string++; } return return_value; } // replace first n characters in string with nulls void clear_string(char *string, int n){ for (int i = 0; i < n; i++) string[i] = '\0'; }
The screenshot of code:
Output:
Note: Plzzz don' t give dislike.....Plzzz comment if u have any problem i will try to resolve it.......