#include <stdio.h>
#include "struct.h"
#define NUM 3
struct Student
{
char name[20];
int age;
};
int main(void)
{
struct Student s_array[NUM];
for(int i=0;i<NUM;i++)
{
printf("name: ");
scanf("%s",s_array[i].name);
printf("age: ");
scanf("%i",s_array[i].age);
}
for(int i=0;i<NUM;i++)
{
printf("%s is %i years old",s_array[i].name,s_array[i].age);
}
return 0;
}
我不知道是什么问题我声明了一个类型为student的结构数组,并使用for循环来初始化它们的字段,但是当我键入年龄时它会给我分段错误。为什么会这样?
struct.c:17:20:warning:format指定类型'int *'但参数的类型为'int'[-Wformat] 的scanf( “%d”,s_array [I]。年龄);
答案 0 :(得分:1)
我为你制定了这段代码
#include < stdio.h>
#include < stdlib.h>
#define NUM 3
struct Student
{
char name[20];
int age;
};
int main(void)
{
struct Student s_array[NUM];
for(int i=0;i<NUM;i++)
{
printf("name: ");
scanf("%s",&s_array[i].name);
printf("age: ");
scanf("%d",&s_array[i].age);
}
for(int i=0;i<NUM;i++)
{
printf("%s is %d years old",s_array[i].name,s_array[i].age);
}
return 0;
}
答案 1 :(得分:0)
struct中的int是一个int,而不是指向int的指针。数组可以直接分配给指针,但在其他类型上,您需要应用地址(&amp;)运算符。而不是说&#34; s_array [i] .age&#34;,说&#34;&amp;(s_array [i] .age)&#34;。
答案 2 :(得分:-1)
#include<stdio.h>
//#include "struct.h>
#define NUM 3
struct Student
{
char name[20];
int age;
};
int main(void)
{
struct Student s_array[NUM];
for(int i=0;i<NUM;i++)
{
printf("name: ");
scanf("%s",&s_array[i].name);
printf("age: ");
scanf("%d",&s_array[i].age);//You sud use "&"operator to take input
}
for(int i=0;i<NUM;i++)
{
printf("%s is %d years old",s_array[i].name,s_array[i].age);
}
return 0;
}