【发布时间】:2020-04-24 18:06:50
【问题描述】:
所以我的第一个问题是。 fgets 会覆盖其他 char* 值吗?
否则,我不确定我是如何弄乱我的 malloc 的。下面是值发生变化的代码。第一行是创建变量的位置。
data[dataIndex++] = createVariable(varName, 1, value, -1, line, NULL);
创建变量的代码
Variable *createVariable(char *name, int type, int val, int len, int line, char *string)
{
Variable *var = malloc(sizeof(Variable));
var->name = name;
var->setting = type;
var->num = val;
var->length = len;
var->line = line;
var->string = string;
return var;
}
数据是什么样的以及它是如何创建的。
Variable **data;
data = malloc(4 * sizeof(Variable *));
忘记添加了,下面是我的 fgets 代码
if (fgets(line, MAX_LINE_LENGTH, in) == NULL)
{
break;
}
【问题讨论】:
-
我什么都不懂。有什么问题吗? fgets 写入表达式行指向的字符数组。有什么问题?
-
@Vlad 复制指针未指向数据,我认为(见答案)。也许??大概?
-
道歉,本质上。例如,data[0] 中的 char* 名称变为随机字符。创建变量后,data[0] 看起来像这样 -> data[0]->name = 0x6054d0 "val01"。但是在运行 fgets 之后。数据[0]->名称=0x6054d0“”
标签: c