wrong answer是哪里出错了


#include
int main()
{    int repeat,i,num=0,sum=0,j;
    char c[999];
    scanf("%d",&repeat);
    getchar();
    gets(c);
    for(j=0;repeat>0;j++)
        {if(c[j]>='0'&&c[j]<='9')
            {num++;
            sum=sum+(c[j]-'0');
            }
        if(c[j]==' '||c[j]=='\0')
        {printf("number=%d,sum=%d.\n",num,sum);
        repeat--;
        num=0;sum=0;
        }
        }        
    return 0;
}

输入一个正整数 repeat (0输入一个整数,输出它的位数以及各位数之和。
Sample Input
3
123456 20000 -1

Sample Output
number=6,sum=21.
number=5,sum=2.
number=1,sum=1.

测了好多次,代码好像没啥问题。
本来还考虑到答题系统会把stdin重定向到文件,可能会导致

    scanf("%d",&repeat);
    getchar();
    gets(c);

中的getchar跳过的不是换行符,而是下面的有用字符。但是实际测试并没有影响,自己在Linux系统中重定向到文件读取试过了,结果依然正确
也许是还有我没考虑到的特殊情况