gpt4 book ai didi

c - 我的代码中有一个运行时错误,我需要分析

转载 作者:行者123 更新时间:2023-11-30 15:10:40 24 4
gpt4 key购买 nike

我正在学习c,我有一个分析问题...我得到了这个代码:

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

#define NUM_ABC_LET 26
void makeABC(char abc[NUM_ABC_LET]);

int main()
{
char abcString[NUM_ABC_LET] = "";
makeABC(abcString);
puts(abcString);
return (0);
}

void makeABC(char abc[NUM_ABC_LET])
{
char letter;
for(letter = 'a'; letter <= 'z'; letter++)
{
strcat(abc, letter);
}
}

谁能告诉我为什么它会一直崩溃?它有什么问题?

最佳答案

您需要预留 26 个字母的空间 + 1 个 NUL 终止符 ('\0')。

所以改变

char abcString[NUM_ABC_LET] = "";

char abcString[NUM_ABC_LET + 1] = "";

并在 makeABC 中的循环之后使用 NUL 终止它

abc[NUM_ABC_LET] = '\0';
<小时/>

另外,如@BLUEPIXY has mentioned in the commentsstrcat 要求其两个参数均为字符串 (char*),但您传递一个 char* 和一个 char > 这会导致事情变得困惑,因为它会调用未定义的行为。所以,替换

strcat(abc, letter);

类似的东西

abc[letter - 'a'] = letter;

关于c - 我的代码中有一个运行时错误,我需要分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com