【发布时间】:2020-02-28 18:53:47
【问题描述】:
我正在开发一个程序,该程序执行以下操作:读取用户的输入,并将字符串拆分为由空格分隔的较小字符串,并将它们打印在单独的行中;例如,如果用户输入 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;
}
【问题讨论】:
-
你需要检测行尾,通常是一个空白字符。是的,换行符是一个空格。
isspace('\n')会给你一个“真实”的价值。 -
你能分享你的代码吗?
-
我猜你正在使用某种 while 循环。在 while 循环完成后,打印该字符串变量(包含最后一个字符串)。
-
请发布实际的、可编译的代码,而不是仅仅类似于代码的东西。
标签: c input whitespace