对文件操作最简单的程序出错了sos,该如何处理

对文件操作最简单的程序出错了sos
#include<stdio.h>
#include<stdlib.h>
main()
{ FILE *p;char name[21];
puts("please enter a file's name:");
char ch=getchar();
if((p=fopen(name,"w"))=NULL)
{puts("打开文件出错。");
exit (0);
}
ch=getchar();
while(ch!='#')
{fputc(ch,p);
ch=getchar();
putchar(ch);
}

fclose(p);
putchar(10);
}
这段程序为什么运行时候,我输入了文件名敲了回车就出错了
我是新来的,几分不多,所以给的分不多,请见谅啊

------解决方案--------------------
1: char name[21] 只声明了,没有赋值。
2:if 语句里面判断应该是 == 


后面还有没有错误没看了。。。
------解决方案--------------------
if里面==号~~,不然不判断,当然就不对了~~
------解决方案--------------------
好凌乱……很多错误通过编译器报错都能找出来。编译器应该比我说得清除,我就不说了。
------解决方案--------------------
学习4楼,不过4楼的char ch是不是要定义在变量定义区