私は語彙アナライザーを作成していますが、これは全体の機能です。この関数は、引数として 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++;
}