我正在瀏覽 K&R C,目前正在嘗試使練習 1-22 的代碼更具可讀性。我有兩個這樣的回圈
while (spaces != 0) {
buf[pos]=' ';
pos;
--spaces;
}
while (tabs != 0) {
buf[pos]='\t';
pos;
--tabs;
}
spaces和tabs是整數,分別計算前面的空格和制表符,buf[pos]是一個字符陣列。目標是在遇到字符時插入前面的空格和制表符。spaces遇到制表符時tabs設定為 0,遇到空格時設定為 0。
有沒有其他方式來表達這兩個回圈,或者這是最易讀的形式?
uj5u.com熱心網友回復:
這是相當可讀的。
我會選擇以下內容:
while ( spaces-- )
buf[ pos ] = ' ';
while ( tabs-- )
buf[ pos ] = '\t';
如果您真的想消除重復,請使用函式。
void append_n_ch( char *buf, size_t *pos, size_t count, char ch ) {
while ( count-- ) {
buf[ (*pos) ] = ch;
}
append_n_ch( buf, &pos, spaces, ' ' );
append_n_ch( buf, &pos, tabs, '\t' );
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/452299.html
