一段C语言程序。为什么输不出我想要的结果?

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:51:19
#include "stdio.h"
#include "conio.h"
#include "string.h"

typedef struct Student
{
long studentNumber;
char *studentName;
float mark[3];
float sum;
float ave;

}Student;

void InputInformation(Student *p,int n);

void InputInformation(Student *p,int n)
{
int i,k;
float a;
printf("Input The Imformation:\n");

for(i=0;i<n;i++)
{
scanf("%d",&((p+i)->studentNumber));
scanf("%s",(p+i)->studentName);

for(k=0;k<3;k++)
{
scanf("%f",&a);
(p+i)->mark[k]=a;

}
printf("Next\n");
}

}

void main()
{
int i,k;
struct Student *stu;

InputInformation(stu,3);

for(i=0;i<3;i++)
{
printf("%6d","%5s",(stu+i

不能只声明指针不分配存储单元。
for(k=0;k<3;i++) --- k++.

#include "stdio.h"
#include "conio.h"
#include "string.h"

typedef struct Student
{
long studentNumber;
char studentName[10]; // 要分配单元
// char *studentName;
float mark[3];
float sum;
float ave;
}Student;

// void InputInformation(Student *p,int n); // 不要它

void InputInformation(Student *p,int n)
{
int i,k;
long v;
printf("Input The Imformation:\n");

for(i=0;i<n;i++)
{
scanf("%d", &p[i].studentNumber);
scanf("%s", p[i].studentName);
for (k=0;k<3;k++) scanf("%f",&p[i].mark[k]);
printf("Next\n");
}
}

void main()
{
int i,k;
// struct Student *stu;
struct Student stu[10]; // 要分配单元,多分了不要紧,不能少了。

InputInformation(&stu[0],3);