sinon_blink 2021-01-01 20:01 采纳率: 100%
浏览 80
已采纳

C语言小白求助!!为什么输出是乱码?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10

struct student
{
    char Name[10];
	char ID[10];
    int Math;
	int English;
	int Chinese;
}stu[50];
void Input()
{
    printf("请输入学生信息\n");
    printf("\t\t姓名	学号    Math    English		Chinese\n");
    for(int i=0;i<SIZE;i++)
    {
        printf("\t\t");
        scanf("%s%s%d%d%d",stu[i].Name,stu[i].ID,&stu[i].Math,&stu[i].English,&stu[i].Chinese);
    }
}
void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("student.dat","wb"))==NULL)
    {
        printf("cannot open file\n");
        return;
    }
    for(i=0;i<SIZE;i++)
        if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
            printf("file write error\n");
        fclose(fp);
}

int main()
{
    Input();
    save();
    return 0;
}




#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student
{
    char Name[10];
	char ID[10];
    int Math;
	int English;
	int Chinese;
}stu[50];
void Chinese_sort(struct student *p,int n);
void Math_sort(struct student *p,int n);
void English_sort(struct student *p,int n);
void Chinese_sort(struct student *p,int n)
{
      int i,j;
      struct student temp;
      for(i=0;i<n-1;i++)
          for(j=0;j<n-1-i;j++){
              if((p+j)->Chinese>(p+j+1)->Chinese){
                  temp=*(p+j);
                  *(p+j)=*(p+j+1);
                  *(p+j+1)=temp;
              }
          }
 }
 void English_sort(struct student *p,int n)
{
      int i,j;
      struct student temp;
      for(i=0;i<n-1;i++)
          for(j=0;j<n-1-i;j++){
              if((p+j)->English>(p+j+1)->English){
                  temp=*(p+j);
                  *(p+j)=*(p+j+1);
                  *(p+j+1)=temp;
              }
          }
 }
 void Math_sort(struct student *p,int n)
{
      int i,j;
      struct student temp;
      for(i=0;i<n-1;i++)
          for(j=0;j<n-1-i;j++){
              if((p+j)->Math>(p+j+1)->Math){
                  temp=*(p+j);
                  *(p+j)=*(p+j+1);
                  *(p+j+1)=temp;
              }
          }
 }
int main()
{
    struct student stu[50],*p;
    p=stu;
    int n=10;
    printf("语文排序如下:\n\n");
    Chinese_sort(p,n);
    for(int i=0;i<10;i++)
		 {
         printf("\t\t姓名\t学号\t成绩\n");
         printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].Chinese);
         }
    printf("数学排序如下:\n\n");
    Math_sort(p,n);
    for(int i=0;i<10;i++)
		 {
         printf("\t\t姓名\t学号\t成绩\n");
         printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].Math);
         }
    printf("英语排序如下:\n\n");
    English_sort(p,n);
    for(int i=0;i<10;i++)
		 {
         printf("\t\t姓名\t学号\t成绩\n");
         printf("\t\t%s\t%s\t%d\n",stu[i].Name,stu[i].ID,stu[i].English);
         }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • 八云黧 2021-01-02 21:27
    关注

    结构体数组指针p里面并没有实质数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题