我想出了我認爲是一個混亂的解決方案,以一個尷尬的(儘管標準)問題: 對於給定的用戶輸入,逆轉的話字母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。
將反轉邏輯分解爲函數可能會使這些問題更易於調試。 –