我在程序中定义的几种数据类型,其中一个看起来是这样的:字符串存储在结构打印不正确
typedef struct {
char name[MAX_STR];
int value;
DataType dType;
} VarType;
而且我想“初始化”使用我定义它的功能如下:
void initVar(VarType *varPtr, char *name, int *val, DataType d)
{
varPtr = (VarType *) calloc(1,sizeof(VarType));
strcpy(varPtr->name, name);
varPtr->dType;
/* we have to store it differently depending on the type, be careful! */
if(d==C_INT_PTR)
varPtr->value = (int)(val);
else if(d==C_INT)
varPtr->value = *val;
/* NOTE THE FOLLOWING LINE */
printf("The variable name prints properly here: %s\n", varPtr->name);
}
最后,我想在代码中的其他地方使用这些结构和方法,但是当我检查,我使用字符串文字设置后它的名字,它打印jibberish即使initVar()
函数内它打印完美。
/* let's store the variables we're gonna put in the frame */
VarType vars[3];
initVar(&vars[0], "num", &num, C_INT);
/* NOTE THE FOLLOWING LINE */
printf("This one prints like jibberish: %s\n",vars[0].name);
为什么不打印正确的字符串了?
很棒的工作!我会使用union,但是这是为了学校,我被要求使用int。无用的varPtr-> dType;声明是一个错误,我最初将它分配给它,但删除了那部分代码以进行调试。谢谢你指出!而且我完全不能动态分配内存,我从未在最终代码中使用calloc或malloc。 –