Refactored Codes
strcpy function from string.h implementation in C
In this blog post, I am writing my own implementation in C for the strcpy function. You can watch the youtube video to see the live implementation of it. [embed]https://youtu.be/jHM1pMTMQeo[/embed] In this implementation, I return a new string rather than copying the value into the memory block pointed at by the pointer provided by the user. Because, in the case where user passes a string which is present in the read only memory block of the program. Then the program will crash with segmentation fault. I allocate a memory block big enough to hold destination string. I copy the destination string in the new string memory block. Then I copy the source string into the new string memory block, and this new copy starts from the 0th index. And, I replace the NULL byte copied by the source string with the char value present at the same position in destination string. You can read the entire source code over here -> StrCpy GitHub.
char * strcpy(char * restrict destinationString, char * restrict sourceString){
    if(NULL == destinationString || NULL == sourceString) return NULL;
    int const destinationStringLength = strlen(destinationString);
    int const sourceStringLength      = strlen(sourceString);

    if(destinationStringLength < sourceStringLength) return NULL;
    
    char * newString = (char *) malloc(sizeof(char) * (destinationStringLength + 1));
    char * charIterator = newString;
    //copy the destination string
    while((*charIterator++ = *destinationString++) != '\0');

    charIterator = newString;
    //copy the source string
    while((*charIterator++ = *sourceString++) != '\0');
    
    //remove null value put by source string
    if(destinationStringLength > sourceStringLength) newString[sourceStringLength] = destinationString[sourceStringLength];

    return newString;
}