如果只有英文字符且不區分大小寫的話按照字典序排序可以用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); //釋放內存
?
?