Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何循环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 - Fatal编程技术网

如何循环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