丿Star 2023-05-02 16:21 采纳率: 100%
浏览 26
已结题

C语言:用指针操作把两个字符数组拼接起来

#之前看到一个用指针操作把两个字符数组拼接起来的问题,下面是我的代码,但是报错了,我不太懂指针操作。
我的代码如下:

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

int main() {
    char str1[100], str2[100];
    printf("Enter the first string:\n");
    scanf("%s", str1);
    printf("Enter the second string:\n");
    scanf("%s", str2);
    // 指向 str1 末尾的指针
    char *ptr = str1 + strlen(str1);
    // 将 str2 连接到 str1 后面
    while (*str2 != '\0') {
        *ptr = *str2;
        ptr++;
        str2++;
    }
    *ptr = '\0';
    printf("The combined string is: %s\n", str1);
    return 0;
}

报错信息:
在str2++;这一行,报错信息:需要作为增量操作数的左值
我看到的原帖子的可以运行的代码如下:

#include <stdio.h>

void mystrcat(char *s1, char *s2) {
    while (*s1)
        s1++;
    while (*s2) {
        *s1 = *s2;
        s1++;
        s2++;
    }
    *s1 = '\0';
}

int main() {
    char s1[100];
    char s2[100];
    scanf("%s", s1);
    scanf("%s", s2);
    mystrcat(s1, s2);
    printf("%s", s1);
    return 0;
}

有人帮我解释一下我的那一行为什么报错吗,该怎么改呢?

  • 写回答

1条回答 默认 最新

  • 创意程序员 2023-05-02 16:39
    关注

    数组是指针常量,因此不能++,把它赋值给一个指针变量就可以了。这样修改:

        char *p2 = str2;
        // 将 str2 连接到 str1 后面
        while (*p2 != '\0') {
            *ptr = *p2;
            ptr++;
            p2++;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月2日
  • 创建了问题 5月2日

悬赏问题

  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。
  • ¥15 livecharts wpf piechart 属性
  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了