关于#c语言#的问题,请各位专家解答!

使用姓名排序,输入三行数据,但是只输出两个姓名,其他数据输出正常,不清楚是怎么回事,请各位帮忙解答一下!

img

用这段代码,按标示行数位置替代原代码,供参考:

//原代码第 226 行
  struct studata tmp;//因为没看到定义结构体的代码,不知道结构体里的 data[] 的数据类型,这里
                     //定义中间变量 tmp 的类型为:strcut studata,用到你的代码里,这里需要
                     //修改为你定义的类型名。
  for (k = 0; k < ps->size - 1; k++)
  {
      for (i = 0; i < ps->size - 1 - k; i++)
      {
          if (strcmp(ps->data[i].name,ps->data[i+1].name) > 0)
          {
              tmp = ps->data[i];
              ps->data[i] = ps->data[i+1];
              ps->data[i+1] = tmp;
          }

      }
  }
 //原代码第 238 行

你这strcpy知识排序了名字,年龄那些没有处理,会导致排序后姓名和年龄对不上。
内循环i+1越界了