首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用<string.h>方法的简单C程序不运行

使用<string.h>方法的简单C程序不运行
EN

Stack Overflow用户
提问于 2021-10-08 20:05:54
回答 1查看 140关注 0票数 0

我有下面的代码。

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>

int main()
{
    char first[] = "foo";
    char last[] = "bar";
    
    strcat(first, last);
    
    printf("%s\n", first);

    return 0;
}

它编译,但当我运行它时,我得到以下错误:

zsh: illegal hardware instruction ./output/strfunc.out

作为参考,我使用clang编译代码:

代码语言:javascript
复制
Apple clang version 12.0.5 (clang-1205.0.22.9)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

我似乎无法使用任何与相关的方法。我在网上查过了,但什么都没发现,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-08 20:12:41

代码语言:javascript
复制
char first[] = "foo";

它告诉编译器创建一个大小正好适合初始化字符串的数组。它没有任何空间可以添加更多的字符。因此,试图用strcat将字符串添加到末尾会导致缓冲区溢出,从而导致未定义的行为。

一个解决方案是显式地调整数组的大小:

代码语言:javascript
复制
#define MAX_SIZE 32
char foo[MAX_SIZE] = "foo";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69501206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档