c-使用空白来表示字符串结束的错误



我正在开发一个程序,该程序可以执行以下操作:读取用户的输入,将字符串拆分为用空格分隔的较小字符串,并将其打印在单独的行中;例如,如果用户输入AB CD,那么我应该打印

AB
CD

现在我的方法是一次扫描一个字符。如果该字符不是空白字符,那么我将其收集到一个字符串中(这种情况可能发生多次(。如果该字符是空白字符,则打印出所收集的字符串。但是,当我输入echo-n(带输入(时,由于没有空格,所以不会打印我收集的最后一个字符串。我能做些什么来解决这个问题吗?还是我的方法完全错误了?谢谢

我的代码如下(我缩写了一点,我的原始程序限定了字符,如果不是字符a,函数返回-1(

int main(void)
{
int t = 1;
char a;
char pattern_collected[5001];
int l = 0;
while (t == scanf("%c", &a)) {
if (isspace(a)) {
for (int i = 0; i <= l; i++) {
printf("%c", pattern_collected[i])
}
l = 0;
memset(pattern_collected, 0x00, 5001);
} else {
pattern_collected[l] = 'A';
l++;
}
}
return 0;
}

如果由于scanf()没有剩余内容而导致循环中断,则需要检查l。如果不是0,则输入将错过最后的空白,然后打印pattern_collected中收集的内容。