我有一个函数可以读取数据并将其存储在 header 中声明的结构中,该函数可以正常读取字符串,但尝试读取数字 (int
) 会返回一个随机数值。
这是导致问题的代码。 functions.h
中的结构。
struct stats{
char name[50];
int calories;
}temp_list[50],activities[50],food[50];
和实际功能
#include <stdio.h>
#include "functions.h"
void scandata(FILE *file1,FILE *file2,int size,int size2){
int i;
file1=fopen("in_activities.txt", "r");
file2=fopen("in_food.txt","r");
for(i=0;i<size;i++){
fscanf(file1,"%s",&activities[i].name);
fscanf(file1,"%d",&activities[i].calories);
}
for(i=0;i<size2;i++){
fscanf(file2,"%s" "%d",&food[i].name,&food[i].calories);
}
for(i=0;i<size2;i++){ //test print to see the values
printf("%s ",&food[i].name);
printf("-%d",&food[i].calories);
}
fclose(file1);
fclose(file2);
return;
}
如果我打印字符串,它会正确显示,但 int
值不会。
最佳答案
这个
printf("-%d", &food[i].calories)
打印food[i].calories
的内存地址。如果你想要值(value),你应该简单地做
printf("-%d", food[i].calories)
关于c - 打印结构的 int 成员变量给出了错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804208/