C语言循环里scanf用不了

作者&投稿:边琛 (若有异议请与网页底部的电邮联系)
在C语言中,为什么我的一个 scanf代码在第二次循环操作时,那步骤不执行了呢?~

因为scanf输入要按回车,输入一个字符后回车,计算机实际上接收了两个字符,即:字符+回车。
试一下flushall(); or fflush(stdin);

因为你非常有可能每输入一个字符就按了一次回车,而回车其实也是一个字符。
在 scanf("%c",char[i]);语句后加上一句getchar();就可以啦!

如果前面有输入数据的情况。把getchar();放在 scanf("%c",char[i]);之前。

肯定是因为game()函数里有scanf语句,并且scanf之后没有处理scanf留下的换行符。

scanf从屏幕是读取数据时,往往不会自动读掉行尾的换行符(你输入数据后,肯定会按一个回车的对吧),所以在game函数里的最后一个scanf结束后,输入缓冲区里还一个换行符在里面,这个时候main函数里的scanf函数读到的字符就是那个换行符

解决方法:
在game函数的最后一个scanf函数后面,加上一个gets语句,用来读掉最后一个换行符即可,当然如果你的输出里敲了多个回车,就要执行多句,不懂可以贴上你的game()函数和你上面的输入,我再告诉你

输入y后,回车也是一个符号,第二次直接就跳出循环了,你可以这么写

	int count=0;
char answer='y';
while(1)
{
if(answer=='y')
printf("another(y/n)");
scanf("%c",&answer);
if(answer=='y')
{
count++;
}
else if(answer=='n')
{
break;
}
}

printf("%d
",count);



C语言如何给用函数二维数组动态赋值
, &nChoose); \/\/ 让用户输入二维数组的大小 int **a = (int **)malloc(nChoose * sizeof(int *));for (int i = 0; i < nChoose; i ++){ a[i] = (int *)malloc(nChoose * sizeof(int));} Scan(a, nChoose);Calc(a, nChoose);\/\/ 最后要释放数组,也要循环 ...

c++中scan f的用法?
scanf()是C语言中的一个输出函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

请问C语言中scanf函数里的%5c 的意思是不是用来输出5个字符?
确实是5个字符,但这个字符是空白符,通常这是作用是用来对齐的,%5c,那么前面4个为空格,第5个为你转义的字符,%-5c则相反,第一个为你转义的字符,后4个为空白符。这种同样适用%5d,%-5d等,例如%5d,输出的数为123,则前面2个为空格加123;若输出的数为12345,则就输出12345,保持原样 ...

请问sas中scan函数如何使用?
scan函数: scan(s,n,"char")表示从字串string中以char为分隔符提取第n个字串。功能(function):从字符表达式s中搜取给定的n个单词 语法(syntax)1、scan(s,n) n为正数时,从字符s末尾提取n个字符 2、scan(s,n) n为负数时,从字符s开始提取n个字符 3、scan(s,n<,list-of-delimiters>)如果...

scanf是什么意思
scanf是C语言中的一个标准输入函数。详细解释:1. scanf的基本含义 scanf是“scan format”的缩写,中文可译为“扫描格式”。它是C语言中的一个非常重要的函数,主要用于从标准输入设备读取并格式化数据。2. scanf的功能 该函数可以根据指定的格式,接收从键盘输入的数据。这些数据的类型可以是整型、浮点...

scanf什么意思
scanf是C语言中的一个标准输入函数。下面详细解释scanf的含义和用法:一、基本含义 scanf是“scan format”的缩写,意为“格式扫描”。它是C语言中的一个非常重要的函数,主要用于从标准输入设备读取并格式化数据。二、功能介绍 scanf函数按照指定的格式接收从键盘输入的数据,并存储到指定的变量中。它的...

用c语言循环语句怎么写一个51单片机的时钟啊,用8个数码管显示时间...
include<reg51.h> define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9unsigned char sec=0,min=0,hour=12,scanled;unsigned char key,flashbit,mode,time; unsigned char disdat[8];sbit led=P1^0;void delay(...

ruby编程语言中,怎么将扫描(scan)后的结果计算总数?
File.read("<file-name>").scan(\/[01]\/).size # => 0\/1的数目

c语言求任意输10个数里相邻3个数的和
include<stdio.h> main(){ int i,n;float sum=0,a[10];printf("请输入10个整数!\\n");for(;i<10;i++)sacnf("%d",&a[i]);while(n!=-1){ printf("请输入第几个数求相邻数和\\n");scan("%d",&n);if(n==0){um=a[0]+a[1]+a[2];printf("%d+%d+%d=%d\\n",a[0],...

关于易语言bat命令使用
.子程序 _按钮1_被单击, , , 处理IP IP = 分割文本 (编辑框1.内容, #换行符, )cnt = 取数组下标 (IP, ).子程序 _按钮2_被单击, , , 扫描 SCAN (6666).子程序 _按钮3_被单击, , , 扫描 SCAN (6668).子程序 SCAN .参数 port, 整数型 .局部变量 tmp, 整数型 .计次循环首 ...

高邑县18761295798: C语言循环里scanf用不了 -
奚审止嗽: 肯定是因为game()函数里有scanf语句,并且scanf之后没有处理scanf留下的换行符.scanf从屏幕是读取数据时,往往不会自动读掉行尾的换行符(你输入数据后,肯定会按一个回车的对吧),所以在game函数里的最后一个scanf结束后,输入缓冲区里还一个换行符在里面,这个时候main函数里的scanf函数读到的字符就是那个换行符解决方法: 在game函数的最后一个scanf函数后面,加上一个gets语句,用来读掉最后一个换行符即可,当然如果你的输出里敲了多个回车,就要执行多句,不懂可以贴上你的game()函数和你上面的输入,我再告诉你

高邑县18761295798: 为什么在C语言中,字符型不能用SCANF输入,而是用GETCHAR? -
奚审止嗽: 楼主你好,关于你问的这个问题在我初学C语言的时候也遇到过,不仅是一个人遇到,这是很多初学者都会遇到的问题~,当然,我不是说楼主大哥你是初学者~~~呵呵~~~~~~~这个问题曾经麻痹了很多人,开始我也是不知道是什么原因,直到一...

高邑县18761295798: C语言的scanf怎么没执行? -
奚审止嗽: 这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时.由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'\n'当一个字符接收,又由于...

高邑县18761295798: C语言 - 循环里第二个scanf不能输入内容 -
奚审止嗽: 这个原因是由于输入数字之后的回车符号引起的;可以在scanf ("%c", &option)之前,或者scanf ("%d", &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题.

高邑县18761295798: C语言中关于字符数组输入,scanf为什么没执行 -
奚审止嗽: 这个算是比较典型的错误的 用scanf来接收字符串,最后的回车符不会被接收,留在缓冲区,下一次再用scanf时,从回车符开始接收,所以ch接收到的字符是回车符,解决方法是,在scanf("%c",&ch);上面加上一条语句:getchar();修改后的代码类似如下:......printf("请输入要查找的字符:"); getchar(); //加上这条语句,消耗缓冲区的回车符. scanf("%c",&ch);......

高邑县18761295798: 在C语言中,为什么我的一个 scanf代码在第二次循环操作时,那步骤不执行了呢? -
奚审止嗽: char c[10]; for(int i=0;i<10;i++) scanf("%c",&c[i]);//如果你代码结构是上面那样的,则输入一人字符后回车,计算机实际上接收了两个字符,即:字符+回车,要将这个多余的回车去除,可以将上面代杩改为下面的形式: char c[10]; for(int i=0;i<10;i++) { flushall(); //清除多余的回车符. scanf("%c",&c[i]); }

高邑县18761295798: c语言——循环里面的第二个scanf不会执行怎么办? -
奚审止嗽: printf("请问还需要继续输入成绩吗?继续请输入'Y',退出请输入除'Y'以外的任何字符:);getchar( ); scanf("%c",&a); 因为上面输入分数时打了个回车 用个getchar()吸收回车;不然回车会被scanf用了 望采纳.

高邑县18761295798: c语言问题:最后scanf一句执行不了 -
奚审止嗽: 楼主 这个问题算是比较特殊的了1.printf("请问你是否还要继续,继续请输入y/Y,否则输入其他的任意字符\n"); scanf("%c",&ch1); 有scanf语句 当循环时又要执行 scanf("%c",&ch); 这两个scanf语句间隔比较近,程序执行的速度快于键...

高邑县18761295798: C语言中为什么有的地方不能用scanf? -
奚审止嗽: 在这条语句printf("input the char:"); 之前 添加代码:getchar();解释:输完第一个scanf之后 必须的有一个变量接受' enter '键

高邑县18761295798: c语言,程序哪里错了,为什么后面那个scanf就不执行,提示了是否继续后直接结束了 -
奚审止嗽: 因为你在上一个scanf函数执行的时候输入了回车在window中,回车会变成两个字符\r\n这些都会保留,并发给下一个scanf然后下一个直接接收到\n字符这时你的while判断会为假,然后就结束程序了建议第二个采用输入字符串比较好,然后取字符串的第一个大于0x20的字符,作为ch的值

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网