如何让控制台一直提示用户输入,直到用户在 C 中输入一个正整数?

How do I make the console keep prompting the user for input until the user enters a positive integer in C?

#include <stdio.h>
#include <cs50.h>

int main(void)
{   
    printf("Give me the length of your shower in minutes: \n");
    int x = GetInt();
    int b = x*12;

    if (x <= 0)
        {
        printf("Please give me a valid input.\n");   
        }

    else           
        printf("In %i minutes you consumed %i bottles of water!\n", x, b);
}

这是我的算法代码,该算法需要几分钟的淋浴时间并将其转换为使用的瓶装水。

我试过用不同的方式写它,甚至使用 "scanf" 但没有任何效果。该代码工作正常,除了当用户输入零或负数时它只是在程序关闭之前打印 "That is not a positive integer." 。我需要它循环并从用户那里得到另一个输入,直到他们 return 一些积极的东西。我已经尝试了几个 do/while 和 for 循环,但我认为我做的不对。有人可以帮助菜鸟编码员吗?

重复代码需要"loop",c中有forwhiledo while。如:

while (true) {
    x = GetInt();
    if (x <= 0) {
        printf("Please give me a valid input.\n");
    } else {
        // do something else
    }
}

其中 "do something else" 也意味着离开循环 :p.

while (true) {
    x = GetInt();
    if (x <= 0) {
        printf("Please give me a valid input.\n");
    } else {
        // do something else
        // and leave
        break;

    }
}

以下将简单地重复提示,直到输入有效值,然后打印结果:

int main(void)
{   
    int x = 0 ;

    do
    {
        printf( "Give me the length of your shower in minutes:\n" ) ;
        x = GetInt() ;

    } while( x <= 0 ) ;

    int b = x * 12 ;
    printf( "In %i minutes you consumed %i bottles of water!\n", x, b ) ;

    return 0 ;
}