第1引数の文字列を大文字にして第2引数にコピーする関数をつくったのですが
うまく動きません
何故か文字列によっては正しくコピーされます
どなたか原因をご教授ください

#include <stdio.h>
#include <ctype.h>

void string_up(char *source, char *result);

int main(void)
{
   char *str;
   string_up("lsdk",str);
   printf("%s",str);
   return 1;
}

void string_up(char *source, char *result)
{
   while(*source)
      *result++ = toupper(*source++);
   *result = '\0';
}