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

编写程序:用gets和puts实现两字符串前半段合并并输出

解决方案:拼接两个字符串的前半部分到新字符串

没问题,我直接给你写好符合要求的代码,再把细节讲清楚,你能一目了然每部分的作用:

#include <stdio.h>
#include <string.h>

int main() {
    // 定义足够大的字符数组,避免溢出(这里设为100/200,可根据实际需求调整)
    char CH1[100], CH2[100], CH3[200];
    int len1, len2;

    // 读取两个输入字符串
    printf("请输入第一个字符串CH1:");
    gets(CH1);
    printf("请输入第二个字符串CH2:");
    gets(CH2);

    // 计算两个字符串的长度
    len1 = strlen(CH1);
    len2 = strlen(CH2);

    // 复制CH1的前半部分到CH3
    // 整数除法规则:长度为5时取前2个字符,长度为4时取前2个
    strncpy(CH3, CH1, len1 / 2);
    // 手动添加字符串结束符,防止输出乱码
    CH3[len1 / 2] = '\0';

    // 把CH2的前半部分追加到CH3后面
    strncat(CH3, CH2, len2 / 2);

    // 输出最终结果
    printf("\n拼接后的字符串CH3:");
    puts(CH3);

    return 0;
}

关键细节说明

  • 关于gets()的提醒:虽然题目要求用gets(),但得告诉你,这个函数因为没有边界检查,很容易造成缓冲区溢出,现代C标准(C11及以后)已经把它废弃了,实际开发里建议用fgets()替代。
  • 前半部分的灵活调整:代码里用了len/2的整数除法,如果想把奇数长度字符串的中间字符也算进前半部分(比如长度5取前3个),可以改成(len + 1)/2,按需调整就行。
  • 字符串结束符的重要性:strncpy()不会自动添加'\0',所以我们手动给CH3补上,不然输出时会出现乱码;而strncat()会自动处理结束符,不用额外操作。

示例运行效果

输入:
Hello
World
输出:
拼接后的字符串CH3:HeWo

如果输入长度为奇数的字符串,比如Program(长度7)和Language(长度8),输出就是ProLang(前3个+前4个)。

内容的提问来源于stack exchange,提问作者rtg2.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:57:11