我正在使用以下代码对字符串数组进行排序:
char dirarr[MAX][MAX], temp[MAX];
for (i = 0; i < n; i++) {
for (j = 0; j < n - 1; j++) {
if (strcmp(dirarr[j], dirarr[j + 1]) > 0) {
strcpy(temp, dirarr[j]);
strcpy(dirarr[j], dirarr[j + 1]);
strcpy(dirarr[j + 1], temp);
}
}
}
现在我有以下问题,但我没有找到解决方案: 我必须对这个字符串数组进行排序,但我必须从第六个字符开始比较,而不是在每个字符串的开头。我尝试了几件事,但没有找到有效的解决方案。 你能帮帮我吗?
感谢Armin
答案 0 :(得分:0)
假设您的所有字符串长度至少为6个字符,则以下内容应该有效:
if (strcmp(dirarr[j]+5, dirarr[j + 1]+5) > 0)
答案 1 :(得分:0)
for (i = 0; i < n; i++) {
for (j = 0; j < n - 1; j++) {
// Make sure that there are at least 6 characters in each string.
if ( strlen(dirarr[j]) > 5 && strlen(dirarr[j + 1]) > 5 )
{
// Compare from the 6-th characters
if (strcmp(dirarr[j]+5, dirarr[j + 1]+5) > 0) {
strcpy(temp, dirarr[j]);
strcpy(dirarr[j], dirarr[j + 1]);
strcpy(dirarr[j + 1], temp);
}
}
// Figure out what do when one of the strings has less than 6 characters
else
{
}
}
}