求助!!!!

dongond44 2010-12-25 11:30:26
main()函数里面调用了create()函数,为什么程序运行到**处就不往下运行了呢??
按说下边的getchar()应该阻塞啊...而且我main函数里也用到过getchar,可以阻塞住,不知这里是什么原因..求解答
运行的时候屏幕打印"新建文件名:",然后就退出了...


void create(struct user* currentUser)
{
struct file* qf = currentUser->pFile;

//建立文件控制块和文件内容
struct file newFile;
char temp = '\0';
int index = 0;
printf("新建文件名:\n");//**

while((temp=getchar())!='\n')
{
printf("???");
newFile.fileName[index++] = temp;
}

newFile.fileName[index] = '\0';
printf("%s",newFile.fileName);
}


...全文
49 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengcao89 2010-12-25
  • 打赏
  • 举报
回复
输入缓冲区的问题

具体的 你可以 上 百度 或者 google 以下“输入缓冲区”
pengzhixi 2010-12-25
  • 打赏
  • 举报
回复
没别的,只是清除下流缓存里面的空格字符等等。这样你的while循环里面的条件一开始就不会为false
prohibit 2010-12-25
  • 打赏
  • 举报
回复
vs2005好像没问题呢,要不就在printf前先fflush(stdin);或者去掉'\n',printf( "新建文件名:" );
dongond44 2010-12-25
  • 打赏
  • 举报
回复
楼上二位的方法都可以解决问题!谢谢啊!
不过我很想知道这是为什么?能再解释细点吗:)
lei001 2010-12-25
  • 打赏
  • 举报
回复
试试这样,估计和‘\n’有关

void create(struct user* currentUser)
{
struct file* qf = currentUser->pFile;

//建立文件控制块和文件内容
struct file newFile;
char temp = '\0';
int index = 0;
printf("新建文件名:\n");//**

while((temp=getchar())!='A')
{
printf("???");
newFile.fileName[index++] = temp;
}

newFile.fileName[index] = '\0';
printf("%s",newFile.fileName);
}

無_1024 2010-12-25
  • 打赏
  • 举报
回复
加一个fflush(stdin)//清除缓存试一试
while((temp=getchar())!='\n')
pengzhixi 2010-12-25
  • 打赏
  • 举报
回复
getc(stdin);//加上这句试试
while((temp=getchar())!='\n')

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧