c - 创建一个将结构(或指向结构的指针)作为参数并按字母顺序对名称进行排序的函数
问题描述
我创建了一个具有 3 个名称的结构,并且我想创建一个函数,该函数将结构(或指向该结构的指针)作为参数并按字母顺序对名称进行排序。我不知道如何修复该sort_name
功能,有人可以给我提示吗?提前致谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char name[50];
};
void getDetail(struct student *ptr) {
int i;
for (i = 0; i < 3; i++) {
printf("Enter %dth name: " ,i+1);
scanf("%s", ptr->name);
ptr++;
}
}
void sort_name(struct student *ptr) {
int i,j=0;
char temp[50];
for (i=0;i<3;i++)
{
for (j=i+1;j<3;j++)
{
if(strcmp(ptr->name,(ptr+1)->name)>0)
{
strcpy(temp,ptr->name);
strcpy(ptr->name,(ptr+1)->name);
strcpy((ptr+1)->name,temp);
}
}
}
printf("In order:");
for(i=0;i<3;i++)
{
printf("%s",ptr->name);
}
}
int main()
{
struct student s[3];
getDetail(s);
sort_name(s);
return 0;
}
解决方案
该功能看起来像
void sort_name(struct student *ptr) {
int i,j=0;
char temp[50];
for ( i=0; i<3; i++ )
{
for (j = 1; j < 3 - i; j++ )
{
if(strcmp(ptr[j-1].name,ptr[j].name ) > 0 )
{
strcpy( temp, ptr[j-1].name );
strcpy( ptr[j-1].name, ptr[j].name) ;
strcpy( ptr[j].name, temp );
}
}
}
}
推荐阅读
- python - 如何通过 for 循环内的列表列表创建字典
- javascript - 使用javascript加载另一个html时收到错误“拒绝加载图像'http://localhost:3001/favicon.ico'”?
- python-3.x - 在python中每x秒后实时保存视频
- system-verilog - 顶部地址为 32'hFFFFFFFF 的 SystemVerilog 内存失败
- reactjs - 当我使用 redux 时,我是否应该始终将响应保持在全局状态,即使结果只会使用一次?
- java - 仅验证方法池中的特定交互
- magento2 - 在面板管理员中解锁编辑配置
- angularjs - 自定义多条形图?
- scala - 在 Apache Spark 中,如何将慢速 RDD/数据集转换为流?
- mysql - docker run 命令如何转换为 docker compose 文件?