为什么return 0后程序没有结束!调用栈有关问题?

为什么return 0后程序没有结束!!调用栈问题???
C/C++ code
#include<stdio.h>
#include<stdlib.h>

int main()
{
    char *ch="nii.txt";
    FILE * fi=fopen(ch,"w");
    if(fi==NULL)
    return -1;
    fputs("12345nihao67890qwertyu",fi);
    int aa=fputc('X',fi);
    fclose(fi);
    putchar(aa);
    fi=fopen(ch,"r");
    if(fi==NULL)
    return -1;
    printf("%c\n",fgetc(fi));
    printf("%c\n",getc(fi));
    
    char * out;
    fscanf(fi,"%s",out);
    char cc;
    while(sscanf(out,"%c",&cc)!=EOF)    
    {
         printf("%c\n",cc);
         out++;
    }
    fclose(fi);
    fi=fopen(ch,"r");//[color=#FF0000]跳到了这里[/color]    fscanf(fi,"%s",out);
    printf("%s\n",out);
    fclose(fi);
    return 0;   [color=#FF0000]//调试发现运行到这里后有跳到上面的标注出[/color]}


为什么会这样 搞不懂啊!!
调用栈显示一大堆,是哪里的问题啊 !!

------解决方案--------------------
char *out; 没有申请空间是野指针,最好利用Malloc 函数进行初始化