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';
}