C语言关于scanf输入错误循环的错误
你最后maing函数的输入不对,因为此时i和j分别是3和4,数组已经越界。
把scanf()换成下面例子中的函数试试:
#include #include #define HEAD_N 10 //Input_uint(FILE *fp)函数中限制输入的最大整数位数int Input_uint1(); //无符号整形输入函数int Input_uint2(int digit);//无符号整形输入函数截取前digit位int main(){ int a,b; printf("请输入赋值给变量a的整数:");a=Input_uint1(); printf("请输入赋值给变量b的整数(截取前3位):");b=Input_uint2(3); printf("a=%d;b=%d
",a,b);return 0;}int Input_uint1() { int count_a=0,ratio=1,count_c=0,number=0,judge=1; //count_a计数变量;ratio转换系数,1,10,100等; // count_c计数变量;number函数返回值; // judge输入判断变量,-1出错;char str[HEAD_N]; for (count_a=0;count_a=0;count_a--,count_c--){ str[count_a]=getchar(); if(!((str[count_a]>='0' && str[count_a]='0'&& count_a0){ for(count_a=count_c+1;count_a='0' && str[count_a]HEAD_N)digit=HEAD_N; for (count_a=0;count_a=0;count_a--,count_c--){ str[count_a]=getchar(); if(!((str[count_a]>='0' && str[count_a]='0'&& count_a0){ for(count_a=count_c+1;count_a='0' && str[count_a]<='9') { number+=(str[count_a]-'0')*ratio; ratio*=10; } else break; }}}while(judge<0); return number;}
do{
j = scanf("%d",&n);
if ( j != 1)
printf("input error !\n");
fflush(stdin); //清除键盘缓冲区试一下。
}while(j!=1);
int n,j;
do{
j = scanf("%d",&n);
if ( j != 1)
printf("input error !\n");
}while(j);
最后一行
scanf在c语言中的作用
在C语言中,scanf扮演着至关重要的角色,它是标准库函数,专门用于接收用户输入的数据。这一功能与printf输出数据的功能形成鲜明对比。scanf的输入格式非常灵活,可以根据需要选择,例如,最常见的就是用于接收十进制整数的输入,格式为%d。使用scanf时,可以明确指定变量来接收输入。例如,要输入一个整数并...
scanf在c语言中的作用
scanf在c语言中的作用是:格式化输入、自动跳过空白字符。1、格式化输入:scanf可以根据指定的格式从标准输入(通常是键盘)读取并解析数据。这是scanf最基本且最重要的特点。通过指定格式,scanf能够读取各种类型的数据,包括整数、浮点数、字符、字符串等。这对于需要按特定格式读取数据的情况非常有用。2、...
C语言中的scanf是什么
C语言中,scanf是一个至关重要的输入函数,它扮演着从用户或标准输入设备获取数据的角色。其功能强大,但使用时需注意细节。其基础形式是这样的:int scanf( const char *format, ... );它的调用方式为,你需要一个格式化字符串,它定义了你期望从输入中读取的数据类型,如`"%d%d"`,后面跟着一个...
c语言中scanf是什么意思(scanf什么时候用c语言)
都作为 有效字符输入 (4)在输入数据时,遇以下情况时认为该数据结束。①遇空格,或按“回车”或“跳格”(Tab)键;②按指定的宽度结束,如“%3d”,只取3列;③遇非法输入。c语言中scanf是什么意思和scanf什么时候用c语言的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
C语言中scanf是什么意思?
C语言中scanf是标准库函数,主要用来接收用户输入的数据。scanf与printf函数一样,都被定义在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。函数格式:int scanf(char *format, args, ...);功 能...
C语言cin和scanf有什么区别啊?
c\/c++ 语言中cin与scanf区别为:性质不同、操作效率不同、取数据不同。一、性质不同 1、cin:cin是标准化输入,包含在头文件<iostream>中。2、scanf:scanf是格式化输入,包含在头文件<stdio.h>中。二、操作效率不同 1、cin:cin先把要输入的东西存入缓冲区,再输入,导致的输入操作效率稍低,但...
c语言中scanf语句的用法及规则
c语言中scanf语句的用法及规则 在C语言中,scanf()函数用于从标准输入(通常是键盘)读取数据,并将其存储到指定的变量中。scanf()函数通常与格式化字符串一起使用,格式化字符串指定了要读取的数据类型和格式。scanf()函数按照格式化字符串中指定的格式读取数据,并将其存储到指定的变量中。scanf()函数的...
c语言中的scanf是什么意思
scanf是C语言中常用的输入函数,用于从标准输入设备(通常是键盘)中获取输入值,并按格式化字符串中的要求进行解析和赋值。它的语法格式为scanf(“格式控制字符串”, &变量1, &变量2, ...,&变量n),其作用是将用户输入的值按照格式化字符串中定义的格式,依次赋值给后面的各个变量。例如,若要获取...
c语言scanf(输入函数的使用方法和注意事项)
scanf函数是C语言中的输入函数,用于从标准输入设备(例如键盘)读取数据。它是C语言中最常用的输入函数之一,也是处理输入数据的重要工具。scanf函数的使用方法 scanf函数的语法如下:```intscanf(constchar*format,...);```其中,format是一个字符串,用于指定输入数据的格式。...表示可变参数,用于...
C语言中的Scanf的用法
C语言中的scanf函数是用于从标准输入流stdin(即键盘)读取数据的重要工具。其基本用法是通过格式字符串指定输入的模式,并将读取的数据存储到相应的变量中,函数原型为int scanf(const char* restrict format,...)。在使用scanf时,格式字符串中的格式说明符决定了如何解析输入内容。这些说明符与输入参数...
禤真维能: int n,j; do{ j = scanf("%d",&n); if ( j != 1)printf("input error !\n"); fflush(stdin); //清除键盘缓冲区试一下. }while(j!=1);
弓长岭区18179455830: c语言 scanf("%d",&a);输入字符为什么会进入死循环? - ?
禤真维能: 研究过scanf函数是怎样接收整型数字的吗?它要跳过所有非数字的字符专接收数字.那么输入了字符它就一直留在输入缓冲区;只要缓冲区有字符,scanf就要去读,一读不是数字,它就跳过,试图等到输入缓冲区没有字符了才等待你输入……如此反复,当然就“死循环”了.为了验证,你在printf("you lose!!\n");后加一句getchar();,把缓冲区里的那个非数字字符接收掉,看看还会不会是“死循环”?
弓长岭区18179455830: c语言scanf循环输入问题 - ?
禤真维能: 用scanf函数输入数值时,可以指定列宽如scanf("%3f",&a);表示截取3个数字字符赋给a,如输入2345,它只将234赋给a,输出结果为234.000000.不可以指定输入精度,如scanf("%3.2f",&a)格式不合法的.详情请查阅:C语言程序设计(第2版) 谭浩强 著,第85页.
弓长岭区18179455830: c语言中数据输入错误了如何提示输入错误并实现要求重新输入 - ?
禤真维能: 数据输入错误,有两种情况: 1 输入的数据格式不正确,比如要求输入整型,但是输入了字符型. 这种情况,可以通过scanf的返回值进行判断,scanf的返回值是正确输入的变量个数.当返回值和要输入的变量个数不同时,则表示出错,要求重...
弓长岭区18179455830: C语言Scanf()死循环问题. - ?
禤真维能: 问题出在scanf("%d",&x);它会读入上面输入残留的信息.你可以用fflush(stdin);清除残余后再读
弓长岭区18179455830: c语言 循环输入 scanf 急!!!急!!!急!!! - ?
禤真维能: 加 fflush(stdin); 清除多余的键.main(){ int W=0;do { printf("\nenter Y or N\n"); fflush(stdin); // W=getchar(); // 这也可以 scanf("%c",&W); printf("\n%c,%d",W,W); if(((W=='Y')||(W=='y'))!=1) break; } while(1); return 0; }
弓长岭区18179455830: 有关C语言的问题:下边程序如果输入时不小心输入一个字母,会不会造成死循环或其他问题,请解释一下为什么 - ?
禤真维能: 会出现死循环,因为第一点: scanf从缓冲区获取数值 第二点: scanf 成功获取i值后返回成功赋值的变量数值, 发生错误时返回EOF 原理 当你不小心输入字符后,scanf返回的是EOF,即i=1没有发生改变,并且缓冲区的数值一直没有得到释放,while循环里的scanf就会一直获取缓冲区的值,而不再通过屏幕获取用户输入的值..那么while就会一直执行,即死循环 处理办法 在scanf后加上fflush(stdin);或者其他的办法把缓冲区的数值清除或用别的变量吃掉缓冲区的值 希望对你有所帮助,谢谢采纳
弓长岭区18179455830: C语言 - 循环里第二个scanf不能输入内容 - ?
禤真维能: 这个原因是由于输入数字之后的回车符号引起的;可以在scanf ("%c", &option)之前,或者scanf ("%d", &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题.
弓长岭区18179455830: C语言输入的字符串不符合条件,怎么提示错误并重新输入?循环要怎么加上去? - ?
禤真维能: 写一个函数(例如int hf(char*s);),判断字符串是否符合要求,不符合要求就循环,一直到符合要求为止.循环的方式多种多样,例如下面这一种:while(scanf("%s",&name)&&hf(name));
弓长岭区18179455830: c语言 scanf("%d",&a);输入字符为什么会进入死循环??
禤真维能:下面是给你原来的代码加上输入限制的 #include<stdio.h> int main() { int b=2,a=0; int t,i; char c[100]; scanf("%d",&a); while(1) { t=0; gets(c); for(i=0;c[i]!='\0';i++) { if(!(c[i]>='0'&&c[i]<='9')) { t=1; break; } } if(t==1) printf("error!\n"); else break; } while(a != b) { printf("you lose!!\n"); scanf("%d",&a); } return 0; }