如何循环scanf_s()直到成功? #包括 int main(){ 浮动x,y; printf(“输入2个数字:\n”); 扫描频率(“%f%f”、“x”、“y”); 如果(getchar()=='\n') { printf(“分区:%f\n”,x/y); printf(“产品:%f\n”,x*y); printf(“总和:%f\n”,x+y); printf(“差异:%f\n”,x-y); } 其他的 { printf(“无浮点值!”); } getchar(); 返回0; }
我们需要输入一个循环,因此如果输入了错误的格式,程序应该再次要求输入两个数字检查输入有效性的最佳方法是检查如何循环scanf_s()直到成功? #包括 int main(){ 浮动x,y; printf(“输入2个数字:\n”); 扫描频率(“%f%f”、“x”、“y”); 如果(getchar()=='\n') { printf(“分区:%f\n”,x/y); printf(“产品:%f\n”,x*y); printf(“总和:%f\n”,x+y); printf(“差异:%f\n”,x-y); } 其他的 { printf(“无浮点值!”); } getchar(); 返回0; },c,loops,while-loop,format,C,Loops,While Loop,Format,我们需要输入一个循环,因此如果输入了错误的格式,程序应该再次要求输入两个数字检查输入有效性的最佳方法是检查scanf_s的返回值,它告诉您成功设置的变量数。在你的情况下,如果是2,那么一切都很好;否则你需要重复 换句话说 #include <stdio.h> int main(){ float x,y; printf("Enter 2 numbers: \n"); scanf_s("%f %f", &x, &y); if (ge
scanf_s
的返回值,它告诉您成功设置的变量数。在你的情况下,如果是2,那么一切都很好;否则你需要重复
换句话说
#include <stdio.h>
int main(){
float x,y;
printf("Enter 2 numbers: \n");
scanf_s("%f %f", &x, &y);
if (getchar() == '\n')
{
printf("Division: %f\n", x / y);
printf("Product: %f\n", x * y);
printf("Sum: %f\n", x + y);
printf("Difference: %f\n", x - y);
}
else
{
printf("no Float-Value!");
}
getchar();
return 0;
}
是一个适当的控制结构,而不是应该删除的
if(getchar()='\n')
。检查输入有效性的最佳方法是检查scanf_s
的返回值,它告诉您成功设置的变量数。在你的情况下,如果是2,那么一切都很好;否则你需要重复
换句话说
#include <stdio.h>
int main(){
float x,y;
printf("Enter 2 numbers: \n");
scanf_s("%f %f", &x, &y);
if (getchar() == '\n')
{
printf("Division: %f\n", x / y);
printf("Product: %f\n", x * y);
printf("Sum: %f\n", x + y);
printf("Difference: %f\n", x - y);
}
else
{
printf("no Float-Value!");
}
getchar();
return 0;
}
是一个合适的控件结构,而不是应该删除的
if(getchar()='\n')
。我不喜欢使用scanf
函数族,因为当您输入错误时,它会发疯并使程序崩溃。例如,如果您有scanf(“%f”和&a)
,请尝试输入堆栈溢出。它疯了
因此,正如我在评论中所说,我认为您应该构建自己的验证函数,并使用fgets
以字符串的形式获取用户输入
下面是一个简单的代码,可以让您开始使用它。这是非常难看的代码,您应该重构它
do {
int c;
while ((c = getchar()) != '\n' && c != EOF); // clear the input stream
printf("Enter 2 numbers: \n");
} while (scanf_s("%f %f", &x, &y) != 2);
#包括/*printf、fgets*/
#包括/*isdigit、isspace*/
#包括/*斯特伦*/
int是有效的浮点数(char*s,int len)
{
int i;
对于(i=0;i
我不喜欢使用scanf
函数族,因为当您输入错误时,它会发疯并使程序崩溃。例如,如果您有scanf(“%f”和&a)
,请尝试输入堆栈溢出。它疯了
因此,正如我在评论中所说,我认为您应该构建自己的验证函数,并使用fgets
以字符串的形式获取用户输入
下面是一个简单的代码,可以让您开始使用它。这是非常难看的代码,您应该重构它
do {
int c;
while ((c = getchar()) != '\n' && c != EOF); // clear the input stream
printf("Enter 2 numbers: \n");
} while (scanf_s("%f %f", &x, &y) != 2);
#包括/*printf、fgets*/
#包括/*isdigit、isspace*/
#包括/*斯特伦*/
int是有效的浮点数(char*s,int len)
{
int i;
对于(i=0;i
问题是什么?您在尝试这样做时遇到了什么问题?您尝试了什么?什么构成了错误的格式?我需要在代码中添加一个循环,以便程序再次要求我输入2个值。如果您输入了错误的格式,并且要检查“错误的格式”,您应该将输入作为字符串并对其进行解析。。。使用scanf
会引起各种各样的麻烦。查找fgets
@EnzoFerber是否正确。您的scanf_将不会使用该格式字符串解析除浮点以外的任何内容。如果要验证输入,应扫描更大范围的输入,然后检查它们是否为i