我有这个结构并使用指针,我试图打印不同结构变量的值,但对于int变量,它打印位置地址而不是值,对于char变量,结果是正确的。
#include <stdio.h>
#include <stdlib.h>
struct calc{
int row;
int col;
int menu_name[20];
int sub_menu_name[20];
};
int main()
{
int count = 0, i = 0;
struct calc *P_calc[2];
//p_calc = (struct calc *)malloc(sizeof(struct calc)*2);
for(count; count<1; count++)
{
P_calc[count] = (struct calc *)malloc(sizeof(struct calc));
printf("Please enter the row cordinates: \n");
scanf("%d",P_calc[i]->row);
printf("Please enter the col cordinates: \n");
scanf("%d",P_calc[i]->col);
printf("Please enter the menu_name: \n");
scanf("%s",P_calc[i]->menu_name);
printf("Please enter the sub_menu_name: \n");
scanf("%s",P_calc[i]->sub_menu_name);
}
for(i; i<1; i++)
{
printf("row : %d\n",P_calc[i]->row);
printf("col :%d\n",P_calc[i]->col);
printf("menu_name: %s\n",P_calc[i]->menu_name);
printf("sub_menu_name :%s\n",P_calc[i]->sub_menu_name);
}
system("PAUSE");
return 0;
}
请帮助我。
先谢谢。
答案 0 :(得分:3)
以下是您的问题:
结构应为
struct calc{
int row;
int col;
char menu_name[20];
char sub_menu_name[20];
};
scanf("%d",P_calc[i]->row);
应为scanf("%d",&P_calc[i]->row);
scanf("%d",P_calc[i]->col);
应为scanf("%d",&P_calc[i]->col);
从scanf
检查返回值也是个好主意。
答案 1 :(得分:0)
scanf语句应为
scanf("%d",&P_calc[i]->row);
地址需要传递给scanf。同样在读取col变量时。