使用姓名排序,输入三行数据,但是只输出两个姓名,其他数据输出正常,不清楚是怎么回事,请各位帮忙解答一下!
用这段代码,按标示行数位置替代原代码,供参考:
//原代码第 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越界了