排序单词在本地运行完美,但在线提供运行时错误

时间:2014-04-07 11:25:03

标签: c algorithm sorting

我的单词sort程序被编译并在我的计算机上运行完美,但在线提交时会出现运行时错误。在本地,它需要输入并提供正确的输出。我无法理解导致此错误的原因。

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

void sort_word(char word[100][10],int n);

int main(){

    int i,n;
    char word[100][10];
    scanf("%d\n",&n);
    for(i=0;i<n;i++){
        scanf("%s",word[i]);
        }
    sort_word(word,n);
    for(i=0;i<n;i++){
        printf("%s\n",word[i]);
        }
return 0;
}

void sort_word(char word[100][10], int n)
{
    int i,j;
    char *tmp,s;
    tmp=&s;
    for(i=0;i<n;i++){
     for(j=0;j<n-1;j++){
        if(strcmp(word[j],word[j+1])>0){
        strcpy(tmp,word[j]);
        strcpy(word[j],word[j+1]);
        strcpy(word[j+1],tmp);
        }
     }
      }
}

1 个答案:

答案 0 :(得分:4)

char *tmp,s;
tmp=&s;

这对你想要达到的目标是错误的。

tmp将指向仅包含1个字符(或简称为字符)的数组。 你想要的是一个大小为10的临时缓冲区(这似乎是你为你的单词选择的最大尺寸)

您可以简单地将其声明为单维数组:char tmp[10]