高人来看下********和////////////那部分的代码怎么不执行。
这段程序是为了试验写的.本来想写个学生信息管理系统的,但写到这地方就写不下去了,所以摘出来做下试验。
编译器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();
}
----------------解决方案--------------------------------------------------------
把getchar();换成scanf("%c",&c);c=getc(stdin);都一样。或直接用getchar(),后面的改为if(getchar()=='c'...,结果是要输入2次n才能跳出,输入y后要4次回车才能继续。郁闷死了
----------------解决方案--------------------------------------------------------
getchar();这个函数是从缓冲区读取数据。你在前面 scanf("%c",&_c); 这个语句 输入一个字符后按的回车会留在键盘缓冲区里。所以在执行 c=getchar(); 这个语句时获得的c是 回车 ,所以执行 printf("////////////\n");语句。
----------------解决方案--------------------------------------------------------
大彻大悟!谢谢楼上的。
----------------解决方案--------------------------------------------------------
还有,那为什么把getchar();换成scanf("%c",&c);c=getc(stdin);也不行呢
----------------解决方案--------------------------------------------------------
还有,那为什么把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();
}
----------------解决方案--------------------------------------------------------
scanf("%c",&_c);
printf("*************\n");
c=getchar();
值得考虑!
----------------解决方案--------------------------------------------------------
我不太清楚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后按下的回车对吧?如果是这样的我就想通了。这个问题困扰了我好几天了。我本来是要写个学生通迅录的,段代码是在添加函数里摘出来做了点变动来实验的。
----------------解决方案--------------------------------------------------------
谢谢楼上提醒,你的意思是用第一个getchar();来存放输入完_c后按下的回车对吧?如果是这样的我就想通了。这个问题困扰了我好几天了。我本来是要写个学生通迅录的,段代码是在添加函数里摘出来做了点变动来实验的。
是这个意思。
学习C语言首先要把基础打好,自己不清楚的地方一定要看书。有兴趣的话,做点自己喜欢的小程序也是蛮不错的。
----------------解决方案--------------------------------------------------------