怎么判断scanf接收的是不是一组纯数字

如何判断scanf接收的是不是一组纯数字
我现在刚刚学习了if.switch.while.do-while.for和数组.

现在遇到的问题是,输入一组数字,并将其赋给一个变量,如:输入 '12345 ',并将 '12345 '存入变量num.需要判断输入的数字中包不包含字符.如果是一组纯数字( '12345 ')的话进行下一步运算,如果输入内容中包含字符(123a45)则要跳出判断要求重新输入....

我弄了好久,就是实现不了~~``请问怎么才能实现这个???

------解决方案--------------------
先读一行,然后判断字符串,不符合要求再读一行。
------解决方案--------------------
当成一个字符串读入,然后将字符串转换为整数,能转换就转换,转换不成就跳出。such as:

char str[128];
int num;
while(scanf( "%s ",str) != EOF)
{
num = 0;
for(i=0;i <strlen(str);i++)
{
if(isdigit(str[i]))
{
num = 10*num+(str[i]- '0 ');
}else
{
break;
}
}
}
------解决方案--------------------
函数名称: isdigit
函数原形:int isdigit(int ch)
函数用途:测试参数是否为数字 0 - 9
参数描述:ch 被测参数
返回结果:数字(0~9)----非零,
否则----0
------解决方案--------------------
int num = 0;
scanf( "%d ", &num);
if (strlen(stdin-> _ptr) > 2)
{
printf( "非纯数字 ");
}

------解决方案--------------------
我给你改一改,你看看

#include <stdio.h>
#define N 20

void main()
{
int num[N],i,j;
char ch,y;
char s[20];

do
{
printf( "请输入一组数字(只限数字0-9): ");
scanf( "%s ",s);


for (i = 0;;i++)
{
y = s[i];
num[i] =y- '0 ';
//y /= 10;
if (num[i] > = 0 && num[i] <= 9)
{
//printf( " %d ",num[i]);
continue;
}
else //if (num[i] < 0 || num[i] > 9)
{
printf( "\n输入有错误\n ");
printf( "是否重新输入?(Y/N) ");
scanf( "%c ",&ch);
getchar();
break;
}
}
if(ch != 'y ' && ch != 'Y ')
for(j=0;j <i;j++)
printf( "%d ",num[j]);
}while (ch == 'y ' || ch == 'Y ');
}
本来只想改一点点,可是我水平有限,所以改了很多