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