我对这个程序有一个问题。我必须创建一个由五个字符串元素组成的数组及其副本,然后我必须按字典顺序对它进行排序。有人可以帮助我吗?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
#define L 100
int main() {
char s[N][L],c[N][L],*str;
int i,aux,sup,j;
printf("Inserisci stringa: ");
for(i=0;i<N;i++)
scanf("%s",s[i]);
for(i=0;i<5;i++)
strcpy(c[i],s[i]);
printf("Frase originale: ");
for(i=0;i<5;i++)
printf("%s\t",s[i]);
printf("\n\nCopia: ");
for(i=0;i<5;i++)
printf("%s\t",c[i]);
for(i=0;i<N;i++){
for(j=i+1;j<N;j++)
{
if(c[i]<c[j])
{
str=c[i][L];
c[i][L]=c[j][L];
c[j][L]=str;}
}
}
printf("\n\nCopia ordinata: ");
for(i=0;i<N;i++)
printf("\t%s",c[i]);
return 0;
}
请向我提出任何更改建议。提前致谢。
最佳答案
要按字母顺序排列两个字符串,您可以使用函数 strcmp(string1, string2)
。
返回R的值为:
- 如果第一个匹配的字符在
string1
中具有较低的值(即,按字母顺序,string1
位于string2
之前),则 R < 0; - 如果字符串相同,则 R = 0;
- R > 0 如果第一个匹配的字符在
string1
中具有更高的值(即,按字母顺序,string2
位于string1
之前)。
更多详情请参阅:http://www.cplusplus.com/reference/cstring/strcmp/ .
要对字符串数组进行排序,您可以使用不同的排序算法,如果您是初学者,我建议您使用冒泡排序(有关介绍,请参阅 http://www.algolist.net/Algorithms/Sorting/Bubble_sort)。
最后,我建议对变量进行更清晰的缩进和命名,这在编写更复杂的代码时非常有帮助。
祝你好运!
关于c - 如何在 C 语言中对字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43954674/