gpt4 book ai didi

c++ - 将 Char 从 lex 保存到 C 中的 Char 数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:36 24 4
gpt4 key购买 nike

我将 c 文件中的字符保存在这个数组中

 char *idTable[100];

在 while 循环中,

if(ntoken == 1){
idTable[numId] = yytext;
printf(" \nVariable %s", idTable[numId]);
printf(" Found\n");
numId++;
}

然后遍历数组。变量 yytext 应该只有标识符和变量,如 int i, int j, int cont

当我在循环中打印这些字符时,它会显示我想要保存的变量。但是当我迭代数组时,它会将所有文本从变量带到底部:

while(i<numId){
printf("%d", i );
printf("%s", idTable[i]);
i++;
}

所以,

printf(" \nVariable %s", idTable[numId]);
printf(" Found\n");

将打印像 Variable i Found 这样的字符,但是 printf("%s", idTable[i]); 将始终打印我想查看的文件中的文本.像这样:

i;
int j;
char c;
char cadena;
float z;
int 89aa12;
z=14.9e-8;
z= 3454y45hrthtrh;
z== 3454y45hrthtrh;
z= 3454y45hrthtrh;
z=12.9;
cadena="Hola";
scanf ("%d",i);
i=i*2;
printf ("El doble es %d",i);
Y="Cualquier Cosa 1";
u=z+y

最佳答案

您在 idTable 的每个元素中保存了一个指向相同内存的指针,因此无论该内存设置为 last 是每个元素将指向的内容。

您需要为每个要保存的字符串分配额外的内存(或使用 std::string)。

strdup 可以做你想做的事。

idTable[numId] = strdup(yytext);

但是不要忘记在用完后释放内存。

关于c++ - 将 Char 从 lex 保存到 C 中的 Char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36441190/

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