| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:要急出人命了。不执行问题
只看楼主 加入收藏
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
结帖率:100%
收藏
 问题点数:0 回复次数:8 
要急出人命了。不执行问题

高人来看下********和////////////那部分的代码怎么不执行。
这段程序是为了试验写的.本来想写个学生信息管理系统的,但写到这地方就写不下去了,所以摘出来做下试验。
编译器DEV-C++


#include "stdio.h"
#include "conio.h"
main()
{
char c,_c;
while(1)
{
scanf("%c",&_c);
printf("*************\n");
c=getchar();
if(c=='y'||c=='Y')
continue;
if(c=='n'||c=='N')
break;
printf("////////////\n");
}
printf("great!");
getch();
}
搜索更多相关主题的帖子: 出人命 
2007-08-22 11:16
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
收藏
得分:0 

把getchar();换成scanf("%c",&c);c=getc(stdin);都一样。或直接用getchar(),后面的改为if(getchar()=='c'...,结果是要输入2次n才能跳出,输入y后要4次回车才能继续。郁闷死了

2007-08-22 11:28
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
getchar();这个函数是从缓冲区读取数据。你在前面 scanf("%c",&_c); 这个语句 输入一个字符后按的回车会留在键盘缓冲区里。所以在执行 c=getchar(); 这个语句时获得的c是 回车 ,所以执行 printf("////////////\n");语句。


2007-08-22 11:29
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
收藏
得分:0 
大彻大悟!谢谢楼上的。
2007-08-22 11:34
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
收藏
得分:0 
还有,那为什么把getchar();换成scanf("%c",&c);c=getc(stdin);也不行呢
2007-08-22 11:35
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
以下是引用学技术的在2007-8-22 11:35:53的发言:
还有,那为什么把getchar();换成scanf("%c",&c);c=getc(stdin);也不行呢

我不太清楚getc();函数的用法,只记得它衍生出的fgetc();是向指定文件读入字符的。

我不知道你在程序中变量_c,是干什么的。反正觉得把
scanf("%c",&_c);
printf("*************\n");
放在循环里太乱, 我改成这样你看可否:

#include "stdio.h"
#include "conio.h"
main()
{
char c,_c;
scanf("%c",&_c);
printf("*************\n");
while(1)
{
getchar();
scanf("%c",&c);
if(c=='y'||c=='Y')
continue;
if(c=='n'||c=='N')
break;
printf("////////////\n");
}
printf("great!");
getch();
}


2007-08-22 12:15
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 
scanf("%c",&_c);
printf("*************\n");
c=getchar();

值得考虑!

惟有学习不断的学习!
2007-08-22 13:07
学技术的
Rank: 2
等 级:论坛游民
帖 子:91
专家分:45
注 册:2007-8-5
收藏
得分:0 
以下是引用nwpu063417在2007-8-22 12:15:42的发言:

我不太清楚getc();函数的用法,只记得它衍生出的fgetc();是向指定文件读入字符的。

我不知道你在程序中变量_c,是干什么的。反正觉得把
scanf("%c",&_c);
printf("*************\n");
放在循环里太乱, 我改成这样你看可否:

#include "stdio.h"
#include "conio.h"
main()
{
char c,_c;
scanf("%c",&_c);
printf("*************\n");
while(1)
{
getchar();
scanf("%c",&c);
if(c=='y'||c=='Y')
continue;
if(c=='n'||c=='N')
break;
printf("////////////\n");
}
printf("great!");
getch();
}

谢谢楼上提醒,你的意思是用第一个getchar();来存放输入完_c后按下的回车对吧?如果是这样的我就想通了。这个问题困扰了我好几天了。我本来是要写个学生通迅录的,段代码是在添加函数里摘出来做了点变动来实验的。

2007-08-23 08:27
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
以下是引用学技术的在2007-8-23 8:27:52的发言:

谢谢楼上提醒,你的意思是用第一个getchar();来存放输入完_c后按下的回车对吧?如果是这样的我就想通了。这个问题困扰了我好几天了。我本来是要写个学生通迅录的,段代码是在添加函数里摘出来做了点变动来实验的。

是这个意思。
学习C语言首先要把基础打好,自己不清楚的地方一定要看书。有兴趣的话,做点自己喜欢的小程序也是蛮不错的。


2007-08-23 09:01
快速回复:要急出人命了。不执行问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011695 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved