[Solved] Re-prompting a user until he/she enters a positive integer value greater than 1


You can solve this by reading a string first, and then extracting any number:

#include <stdio.h>

int main(void)
{
    int length = 0;
    char input[100];
    while(length <= 0) {
        printf("Enter length: ");
        fflush(stdout);
        if(fgets(input, sizeof input, stdin) != NULL) {
            if(sscanf(input, "%d", &length) != 1) {
                length = 0;
            }
        }
    }

    printf("length = %d\n", length);
    return 0;
}

Program session:

Enter length: 0
Enter length: -1
Enter length: abd3
Enter length: 4
length = 4

Crucially, I always check the return value from scanf, the number of items successfully converted.

3

solved Re-prompting a user until he/she enters a positive integer value greater than 1