本人小菜,请教如何能使程序在不满足输入时提示用户,并重新等待用户输入

本人小菜,请问怎么能使程序在不满足输入时提示用户,并重新等待用户输入
本人写的小练习题如下,想修改为当用户输入n或m为非整数时,提示输入有误,并且自动等待输入,直到正确!

#include<stdio.h>
#include<stdlib.h>
int main(void)
{ int n,m;
  
  int (*ptr)[m];
printf("pls enter 2 number n &m. \n");

  
 while(scanf("%d%d",&n,&m)==2)
  { 
     
       ptr=(int(*)[m])malloc(n*m*sizeof(int));
       for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
         {
  scanf("%d",&ptr[i][j]);
          printf("%-2d",*(*(ptr+i)+j));
  }
    
     
  }

  
  return 0;


}

------解决思路----------------------
#include <stdio.h>
#include <string.h>
char s[80];
double d;
char c;
int main() {
    while (1) {
        printf("Input a double:");fflush(stdout);
        rewind(stdin);
        fgets(s,80,stdin);
        if (strlen(s)>20) {
            printf("Input too long(>20)!\n");
            continue;
        }
        if (2==sscanf(s,"%lf%c",&d,&c)) {
            if ('\n'==c) {
                printf("%lg is a double.\n",d);
                break;
            }
        }
        if ('\n'==s[strlen(s)-1]) s[strlen(s)-1]=0;
        printf("\"%s\" is NOT a double!\n",s);
    }
    return 0;
}