C语言中用希尔排序给字符串排序

输入5个字符串(仅有字母),用希尔排序按字母表顺序排序,且不分大小写。
例如:输入abc,bqg,aVK
得到:abc aVK bqg

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void shellSort(); // 函数声明

char a[5][100];
int len;
int main(void)
{
    int i;
    len=5;
    printf("请输入要排的5个字符串:");
    for (i = 0; i < len; i++) { 
        scanf("%s",a[i]);
    }   
    shellSort(); // 调用希尔排序函数
    printf("希尔升序排列后结果为:\n");
    for (i = 0; i < len; i++) { // 排序后的结果的输出
        printf("%s\n",a[i]);
    }

    system("pause");
    return 0;
}

void shellSort()
{
    int i, j, k,  gap;  // gap 为步长
    char tmp[100];
    for (gap = len / 2; gap > 0; gap /= 2) {  // 步长初始化为数组长度的一半,每次遍历后步长减半,
        for (i = 0; i < gap; ++i) { // 变量 i 为每次分组的第一个元素下标 
            for (j = i + gap; j < len; j += gap) { //对步长为gap的元素进行直插排序,当gap为1时,就是直插排序
                strcpy(tmp,a[j]);
                k = j - gap;  // j初始化为i的前一个元素(与i相差gap长度)
                while (k >= 0 && (strcmp(a[k],tmp)>0) )
                {
                    strcpy(a[k + gap] ,a[k]);
                    k -= gap;
                }
                strcpy(a[k + gap],tmp); 
            }
        }
    }
}