You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:05:41