C语言:如何用while循环在字符数组头部插入字符生成Banana?
用while循环实现字符数组头部插入并右移的解决方案
嘿,我懂你要做的事——把'B'插到"anana"的开头变成"Banana",还想用while循环完成字符右移的操作,对吧?这事儿其实挺简单的,我一步步给你掰扯明白:
核心思路
要在数组头部插元素,关键是先把原数组里的所有元素从后往前依次右移一位,给新元素腾出第一个位置。要是直接从前往后移,前面的元素会被覆盖掉,所以必须从最后一位开始操作才行。
代码示例(以C语言为例)
假设我们已经准备好一个足够容纳新字符串的字符数组(原字符串长度是5,所以数组长度至少得设为6,留个位置给新字符):
#include <stdio.h> #include <string.h> int main() { // 初始化数组,提前预留了一个位置给要插入的'B' char arr[6] = "anana"; // 获取原字符串的长度(这里是5) int len = strlen(arr); // 从最后一个字符的下一个位置开始,用while循环右移 int i = len; while (i > 0) { // 把前一个位置的字符挪到当前位置 arr[i] = arr[i - 1]; i--; } // 在头部插入'B' arr[0] = 'B'; // 输出结果 printf("%s\n", arr); // 会打印出Banana return 0; }
代码拆解
- 先用
strlen(arr)拿到原字符串"anana"的长度是5,这样我们就知道要从索引5的位置开始右移(数组索引从0开始,原最后一个字符在索引4)。 - while循环的条件是
i > 0,也就是从索引5一直循环到索引1:- 第一次循环:把索引4的'a'移到索引5
- 第二次:把索引3的'n'移到索引4
- 以此类推,直到把索引0的'a'移到索引1
- 循环结束后,索引0的位置就空出来了,直接赋值为'B'就搞定了。
小提醒
- 一定要保证数组长度足够装下插入后的新字符串,不然会出现数组越界的问题!比如原字符串长度是5,数组长度至少得设为6。
- 换成其他编程语言的话,思路也是一样的:先确定原长度,从后往前用while循环移动元素,最后插入新元素就行。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

