如果只有英文字符且不区分大小写的话按照字典序排序可以用strcmp函数,两个字符串自左向右逐个字符相比(按ASCII值大小相比较)
strcmp(s1,s2)
当s1<s2时,返回为负数;
当s1==s2时,返回值= 0;
当s1>s2时,返回正数。
例如"A"<"C" 、"d">"D"、 "computer">"compare"
如果想要不区分大小写的话可以用strcasecmp函数
strcmp("A","a"),返回的是负数,因为a的ACIIS码比A大
strcasecmp("A","a"),返回0,把A和a看成一样的
先定义字符串结构体
typedef struct String{
char str[1010];
}String;
排序函数实现
void Sort(String s[],int n){ //冒泡排序
int i,j;
String temp;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(strcmp(s[j].str,s[j+1].str)>0){
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
}
主函数调用
scanf("%d",&n);
String* s = (String*)malloc(n*sizeof(String));//动态分配空间
for(i=0;i<n;i++){
scanf("%s",s[i].str);
}
Sort(s,n);
for(i=0;i<n;i++){ //打印结果
printf("%s\n",s[i].str);
}
free(s); //释放内存
标签:String,temp,s2,s1,C语言,字符串,排序,strcmp From: https://blog.csdn.net/m0_62574258/article/details/140244074