我試圖將輸入的字符陣列連接到另一個字符陣列以反轉我的字串并檢查它是否是回文,但我想跳過特殊字符。當我的 for 回圈遇到一個特殊字符時,它會停止讀取字串的其余部分。


這就是我的 for 回圈的樣子
for(i=0; i < strlen(original); i )
{
if((original[i] >= 49 && original[i] <= 57) || (original[i] >= 97 && original[i] <= 122))
{
cleaned[i] = original[i];
}
else if(original[i] >= 65 && original[i] <= 90)
{
cleaned[i] = original[i] 32;
}
else if((original[i] >= 33 && original[i] <= 47) || (original[i] >= 58 && original[i] <= 64) || (original[i] >= 91 && original[i] <= 96) || (original[i] >= 123 && original[i] <= 126))
{
continue;
}
}
“已清理”旨在保留帶有小寫字母和忽略特殊字符的原始字串字符。
有什么方法可以移動到下一個非特殊字符并替換第一個特殊字符的空格嗎?
uj5u.com熱心網友回復:
您需要兩個索引:一個用于您正在讀取的陣列,另一個用于您正在寫入的陣列。如果您對兩者使用相同的索引,則最終會在輸出陣列中出現未設定的插槽。在這種情況下,大概這些恰好是 0,過早地終止了輸出字串。
uj5u.com熱心網友回復:
我們來看看
012345
original: a!bb!a
cleaned: abba
0123
您希望程式具有與以下相同的效果:
cleaned[0] = original[0];
// Skip original[1];
cleaned[1] = original[2];
cleaned[2] = original[3];
// Skip original[4];
cleaned[3] = original[5];
cleaned[4] = 0;
正如你所看到的,cleaned[i] = original[i];不可能是對的。原始字串中的偏移量將與清理后的字串中的偏移量不同,因此您需要有兩個索引或指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361337.html
下一篇:C是否通過參考傳遞?
