c/c++ | 一个开源项目的一个小逻辑引发的思考
index.php/tags-41973.html" class="superseo">���奔主题
()while (len >= 1 && s[len - 1] == '\n') s[len - 1] = 0;
很明显,这就是让结尾的所有换行统统被删除掉
因为结尾可能不止一个 \n 换行符 所以使用while 循环,而不是用if
()下面直接举例来说明
这是使用 if 实现
#include #include void remove_trailing_newlines_if(char *s) { int len = strlen(s); // 使用 if 语句处理末尾的换行符 if (len >= 1 && s[len - 1] == '\n') { s[len - 1] = '原始字符串: "Hello " 处理后的字符串: "Hello "'; // 将换行符替换为字符串结束符 } } int main() { char s[] = "Hello\n\n\n\n\n"; printf("原始字符串: \"%s\"\n", s); // 调用函数去除末尾的换行符 remove_trailing_newlines_if(s); printf("处理后的字符串: \"%s\"\n", s); return 0; }
#include #include void remove_trailing_newlines_while(char *s) { int len = strlen(s); printf("len:%d ", len ); // 使用 while 循环去除末尾的换行符 while (len >= 1 && s[len - 1] == '\n') { s[len - 1] = '#运行结果 原始字符串: "Hello " 处理后的字符串: "Hello"'; // 将换行符替换为字符串结束符 len--; // 减少字符串长度 } } int main() { char s[] = "Hello\n\n\n\n\n"; printf("原始字符串: \"%s\"\n", s); // 调用函数去除末尾的换行符 remove_trailing_newlines_while(s); printf("处理后的字符串: \"%s\"\n", s); return 0; }
这是使用 while 实现
在线编译器—支持的算力还是挺高的
其实,还有一个纠结点,就是源码上面的应该是少了自减变量,要不然就只能迭代循环一次!
The End