C语言不使用string库实现字符串空格替换为'XXX'的方法
现有代码存在的问题
- 遇到第一个空格替换后直接执行break,只会处理第一个空格,无法遍历整个字符串
- 原字符串下标和输出缓冲区buff的下标没有做偏移处理:1个空格要替换为3个字符,替换后buff的索引会比原字符串多2*已处理空格数,直接共用下标会出现字符错位
- 没有处理空格后的剩余字符拷贝逻辑,也没有给buff添加字符串结束符
\0,输出会出现乱码
修复后的实现代码
char buff[100]; char *my_func(char *arr) { // 分别维护原字符串、输出缓冲区的下标,避免替换导致的下标错位 int arr_idx = 0, buff_idx = 0; while(arr[arr_idx] != '\0') { if(arr[arr_idx] == ' ') { // 空格替换为三个X buff[buff_idx++] = 'X'; buff[buff_idx++] = 'X'; buff[buff_idx++] = 'X'; arr_idx++; } else { // 非空格字符直接拷贝 buff[buff_idx++] = arr[arr_idx++]; } } // 补充字符串结束符,保证输出正常 buff[buff_idx] = '\0'; return buff; } int main() { char arr[]="This is my string"; my_func(arr); printf("%s",buff); return 0; }
以上代码全程没有使用string库相关函数,测试输出结果为ThisXXXisXXXmyXXXstring,符合需求。
内容的提问来源于stack exchange,提问作者sanchi gupta
相关产品推荐
相关产品推荐

