请哪位大虾调试一下这个程序、

来源:百度知道 编辑:UC知道 时间:2024/05/12 05:16:46
#include<stdio.h>
#include<stdlib.h>
main()
{
char h;
void open();
void creat();
printf(" 1-Creat\n");
printf(" 2-Open\n");
printf(" 3-Exit\n");
printf(" Enter your choice:\n");
h=getchar();
switch(h)
{case '1':creat();break;
case '2':open();break;
default: Exit(0);
}

}

void creat() /*创立一个文件没并向其中写入数据*/
{ FILE *fp;
char ch,filename[20];
printf("Enter your filename:\n");
scanf("%s",filename);

if((fp=fopen(filename,"w+"))==NULL)
{printf("Error\n");
exit(0);
}
ch=getchar();
while(ch!='\0')
{fputc(ch,fp);
ch=getchar();
}

fclose(fp);
}

怎么能期望getchar()返回'\0'?

应该用int型接收getchar()和fgetc()的返回值,再判断EOF表示输入结束。运行的时候,在Windows上在行首输入Ctrl+Z之后回车表示EOF,在Unix/Linux上输入Ctrl+D表示EOF。