PTA《C语言程序设计》习题8-7 字符串排序

我在Dev C上测试样例数据,结果没问题。但在平台上测试全部提示段错误。是哪里出错了?

另外,我不会把排序写成函数。请问应该怎样定义和调用参数?

题目:

图片说明

代码:

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

void swap(char *s1, char *s2);

int main()
{
    char s[5][81];
    int i;
    for(i=0;i<5;i++)
        scanf("%s",s[i]);

    int finish=5,index=5;
    while(finish>1)
    {
        for(i=0;i+1<finish;i++)
        {
            if(strcmp(s[i],s[i+1])>0)
            {
                swap(s[i],s[i+1]);
                index=i+1;
            }
        }
        if(index<finish) finish=index;
        else finish=0;
    }

    printf("After sorted:\n");
    for(i=0;i<5;i++)
        printf("%s\n",s[i]);

    return 0;
}

void swap(char *s1, char *s2)
{
    char *temp;
    strcpy(temp,s1);
    strcpy(s1,s2);
    strcpy(s2,temp);
}

void swap(char *s1, char *s2)
{
char temp[100]; //这里
strcpy(temp,s1);
strcpy(s1,s2);
strcpy(s2,temp);
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^