我想出了我认为是一个混乱的解决方案,以一个尴尬的(尽管标准)问题: 对于给定的用户输入,逆转的话字母for循环不工作
如:
这是一个标准测试
变得
SIHT SI一个dradnats TSET
,而不是
TSET dradnats一个SI SIHT
事情的心脏是这段代码
while (!iscntrl(user_input[x])) // quit when new line is read
{
restart:
x++;
puts("first level test");
if (user_input[x]==' ')
{
puts("second level test");
for (i=x; user_input[i]!=' '; --i)
{
reverse_words[k]=user_input[i];
k++;
puts("third level test");
goto restart;
}
}
}
(是的,我知道,有在那里一个goto:/)
,但循环的第三级从未被触及。
想必也有一些是完全错误的(i=x; user_input[i]!=' '; --i)
作为一个for循环参数?
x
,i
和k
在第一次循环开始之前都被初始化为整数== 0。
将反转逻辑分解为函数可能会使这些问题更易于调试。 –