我的单词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);
}
}
}
}
答案 0 :(得分:4)
char *tmp,s;
tmp=&s;
这对你想要达到的目标是错误的。
tmp
将指向仅包含1个字符(或简称为字符)的数组。
你想要的是一个大小为10
的临时缓冲区(这似乎是你为你的单词选择的最大尺寸)
您可以简单地将其声明为单维数组:char tmp[10]