如何在 C 中组合两个相似的 while 循环?



我正在学习K&R C,目前正在尝试使练习1-22的代码更具可读性。我有两个这样的循环

while (spaces != 0) {
buf[pos]=' ';
++pos;
--spaces;
}
while (tabs != 0) {
buf[pos]='t';
++pos;
--tabs;
}

spacestabs是整数,分别计算前面的空格和制表符,buf[pos]是 char 数组。目标是在遇到字符时插入前面的空格和制表符。 遇到制表符时spaces设置为 0,遇到空格时tabs设置为 0。

有没有其他方法来表达这两个循环,或者这是最易读的形式?

这是非常可读的。

我会选择以下内容:

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' );

相关内容

  • 没有找到相关文章

最新更新