I have two versions of C Codes. The first one works but the second one does not work.
The output of the second one is a segmentation fault but I don't know why.
Maybe someone can explain me my mistake? I would really appreciate that.
this works:
#include <stdio.h>
#include <stdlib.h>
void stringcpy(const char*, char*);
    int main() {
        const char * original = "C is fun.";
        int size = sizeof(original) / sizeof(char*);
        copy = (char*)malloc(sizeof(char) * 11 + 1);
        stringcpy(original, copy);
        printf("%s\n", copy);
        free(copy);
        return 0;
    }
    void stringcpy(const char* original, char* copy) {
        int i;
        for(i = 0; *(original + i) != '\0'; i++) {
            *(copy + i) = *(original + i);
        }
        *(copy + i) = '\0';
    }
this doesn't work:
#include <stdio.h>
#include <stdlib.h>
void stringcpy(const char*, char*);
int main() {
    const char * original = "C is fun.";
    char * copy;
    stringcpy(original, copy);
    printf("%s\n", copy);
    free(copy);
    return 0;
}
void stringcpy(const char* original, char* copy) {
    int size = sizeof(original) / sizeof(char*);
    copy = (char*)malloc(sizeof(char) * size + 1);
    int i;
    for(i = 0; *(original + i) != '\0'; i++) {
        *(copy + i) = *(original + i);
    }
    *(copy + i) = '\0';
}
 
     
    