【发布时间】:2019-01-25 08:12:25
【问题描述】:
您好,我对整数有疑问。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
struct data
{
char name[50];
int grade[1];
};
int main()
{
struct data persons[30];
int n = 3;
int i;
for(i=0;i<n;i++)
{
printf("Type person name nr: [%d] ",i+1);
scanf("%s",persons[i].name);
printf("Type grade: (from 1 to 6) ");
scanf("%d",persons[i].grade);
}
for(i=0;i<n;i++)
{
printf("Name [%d]: %s\n",i+1,persons[i].name);
printf("Grade [%d]: %d\n",i+1,persons[i].grade);
}
return 0;
}
当我输入一些名称和等级时,输出不正确: This is my output
【问题讨论】:
-
你的编译器应该已经打印了一些警告。如果没有,请使用
-Wall编译。 -
正确方法
&persons[i].grade。请在每次编译程序时使用-Wall和-Werror标志。 -
这可能是 SO 上关于 scanf 中缺少 & 的第 100 万个问题。投票结束是一个简单的错字。
-
另外,
int grade[1];声明了一个包含 1 个整数的数组。虽然单元素数组有合法用途(在某些情况下,您希望地址提供超出结构本身的分配,例如在实现内存分配方案时) - 这不是一个。如果您只需要一个int,请声明int grade;并删除[1]。
标签: c