我在程序中定義的幾種數據類型,其中一個看起來是這樣的:字符串存儲在結構打印不正確
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。 –