m0_58337376 2022-05-13 11:53 采纳率: 57.1%
浏览 18

我在实现函数时发现前置和后置给出的结果不同

问题遇到的现象和发生背景
 
我在实现strnact是发现dest++++dest给出的结果不同

问题相关代码,请勿粘贴截图

char* my_strncat(char* dest, const char* src, int n)
{
char* ret = dest;
while (*++dest);
while (n && (*dest++ = *src++))
n--;
*dest++ = '\0';
return ret;
}
int main()
{
char a[30] = "abcdefg";
char c[] = "what is error";
my_strncat(a,c,6);
printf("%s", a);
return 0;
}

运行结果及报错内容

abcdefg,我用dest++我的dest指针没有动
而我用
++dest可以

我的解答思路和尝试过的方法

dest++换成++dest

我想要达到的结果

abcdefgwhat i

  • 写回答

2条回答 默认 最新

  • 浪客 2022-05-13 14:10
    关注

    while (*dest++); 当循环结束,dest已经指向字符串末尾'\0'之后了。
    因此上面循环结束后需加一句 dest--;

    评论

报告相同问题?

问题事件

  • 创建了问题 5月13日

悬赏问题

  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统
  • ¥100 rtmpose姿态评估