I have this program:
#include<stdio.h>
void copy_string(char string1[], char string2[]){
    int counter=0;
    while(string1[counter]!='\0'){
        string2[counter] = string1[counter];
        counter++;
    }
    string2[counter] = '\0';
}
int main() {
   char* myString = "Hello there!";
   char* myStringCopy;
   copy_string(myString, myStringCopy);
   printf("%s", myStringCopy);
}
My question is, why isn't it working unless I declare myStringCopy as a fixed-size variable (char myStringCopy[12];)? Shouldn't it work if I add a \0 character after the copy as I'm doing?
 
     
     
     
    