从第x个字符开始比较C中的字符串(C)

时间:2014-10-02 17:29:21

标签: c string compare

我正在使用以下代码对字符串数组进行排序:

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

2 个答案:

答案 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
     {
     }

  }
}