c - 单词排序在本地运行完美,但在线运行时出错

标签 c algorithm sorting

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

#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);
        }
     }
      }
}

最佳答案

char *tmp,s;
tmp=&s;

这对于您要实现的目标来说是错误的。

tmp 将指向只有 1 个字符的数组(或简单地指向一个字符)。 您想要的是一个大小为 10 的临时缓冲区(这似乎是您为单词选择的最大大小)

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

关于c - 单词排序在本地运行完美,但在线运行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911022/

相关文章:

sorting - 如何以最少的获取记录按字母顺序获取下一条和上一条记录?

python - 实现 AirDrop 协议(protocol)

c - 解析 C 中的整数行

c - fopen 改变 C 中的变量值

c - 如何正确引用 GNU readline 库来扫描终端输入?

algorithm - O(logn) 时间复杂度中 BST 的中值

arrays - 数据结构面试: find max number in array

javascript - 如何制作快速的非抗锯齿HTML5canvas基本绘图功能?

C 编程 - 对最后一次迭代进行排序不会改变任何东西

python - 使用 zip() 对元组列表进行排序时,有时不支持“<”