c - 打印结构的 int 成员变量给出了错误的值

标签 c struct

我有一个函数可以读取数据并将其存储在 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/

相关文章:

c - OpenMP 优化?

切换到/MT 后的 C++ 链接问题

c - 在 header 结构之后访问数据

C 中的彩色输出到屏幕

ios - Udp套接字绑定(bind)失败

C++按字母顺序对结构的 vector 进行排序

c - 如何递归打印结构数组?

python - 如何在 Python 中将 256 位大端整数转换为小端?

c - 如何在 C 中转换没有赋值的指针?

php - 与 python 字典等效的 php 结构是什么?