macos 下使用c的string.h 中的strcat报错。

查看:217
本文介绍了macos 下使用c的string.h 中的strcat报错。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在 Macos下使用string.h中的 strcat 结果实际调用的是 _string.h 中的strcat声明。

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

void strings() {
    char str[] = "abcd";
    char str1[] = "efg";
    strcat(str, str1);
    printf("拼接后的 str 值为:%s\n", str);
}

在Macos 下这段代码不报错什么也不打印,使用 ide 点击 strcat 定位到:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/secure/_string.h,头文件中的 strcat 声明中。在 _string.h 中声明如下

#if __has_builtin(__builtin___strcat_chk) || defined(__GNUC__)
#undef strcat
#define strcat(dest, src)                    \
  __builtin___strcat_chk (dest, src, __darwin_obsz (dest))
#endif

解决方案

str分配的内存空间不足呀,你试试大点的,就可以了。

char str[20] = "abcd";

这篇关于macos 下使用c的string.h 中的strcat报错。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆