为什么这里不能单个字符地输入

问题描述
输入n个正整数,按顺序输出各位数。

输入
第一行为正整数的个数n. 以下为n个正整数。

输出
对于每个整数,在单独的一行中输出每个整数的分解,每个数字后有一空格。

输入样列
3
1256
0
1545

输出样例
1 2 5 6
0
1 5 4 5
我这样写是错的

#include<stdio.h>
int main()
{
    char ch[110];
    int t,i;
    scanf("%d",&t);
    getchar();
    while(t--){
        for(i=0;ch[i]!='\0';i++){
            scanf("%c",&ch[i]);
            printf("%c ",ch[i]);
        }
        printf("\n");
    }
    return 0;
}
 

改成这样就对了

#include<stdio.h>
int main()
{
    char ch[110];
    int t,i;
    scanf("%d",&t);
    getchar();
    while(t--){
        gets(ch);
        for(i=0;ch[i]!='\0';i++){
            printf("%c ",ch[i]);
        }
        printf("\n");
    }
    return 0;
}
 

一定要以字符串的形式输入吗

把'\0'改成'\n'试试

第一个代码,ch[i]还没赋值就开始循环了,循环完i又加1
所以输入了结束符依旧没有结束循环

#include<stdio.h>
int main()
{
    char ch[250];
    int t,i;
    scanf("%d",&t);
    getchar();
    while(t--){
        for(i=1;ch[i-1]!='\n';i++){
            scanf("%c",&ch[i]);
            printf("%c ",ch[i]);
        }
        printf("\n");
    }
    return 0;
}