gpt4 book ai didi

c++ - 追加 char* 数组时出现段错误

转载 作者:行者123 更新时间:2023-11-28 07:26:06 25 4
gpt4 key购买 nike

我正在制作一个词法分析器,这是整个事物的一个功能。此函数将 char、c 作为参数,并将此 char 附加到已定义的 char* 数组 (yytext) 的末尾。然后它会增加文本的长度 (yylen)。

当它进入这个函数时,我在显示的行上不断出现段错误。我在这里做错了什么?谢谢。

顺便说一句:不能使用 strncpy/strcat 等(尽管如果您愿意,也可以向我展示该实现)

这是我的代码:

extern char *yytext;
extern int *yylen;

void consume(char c){
int s = *yylen + 1; //gets yylen (length of yytext) and adds 1
//now seg faults here
char* newArray = new char[s];
for (int i = 0;i < s - 1;i++){
newArray[i] = yytext[i]; //copy all chars from existing yytext into newArray
}
newArray[s-1] = c; //append c to the end of newArray
for (int i = 0;i < s;i++){ //copy all chars + c back to yytext
yytext[i] = newArray[i];
}
yylen++;
}

最佳答案

你有

extern int *yylen;

但尝试像这样使用它:

int s = (int)yylen + 1;

如果变量是 int *,像 int * 一样使用它并解引用以获取 int。如果它应该是一个 int,那么就这样声明它。

关于c++ - 追加 char* 数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729420/

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