我编译下面的c代码,我发现没有错误,但是当我运行它时,程序停止并得到此错误:分段错误(核心转储)。我正在尝试对任何行中都有一个字符串的数组进行选择排序。任何
#include <stdio.h>
#include <string.h>
#define n 50
int main() {
int i, j, pl; /* pl = number of words */
char words[pl][n];
char *temp;
scanf("%d", &pl);
for (i = 0; i < pl; i++); {
scanf("%s", words[i]);
}
/* bla bla
bla bla */
for (i = 0; i < (pl - 1); i++) {
pos = i;
for (j = i + 1; j < pl; j++) {
if (strcmp(words[pos], words[j]) >= 0)
pos = j;
}
if (pos != i) {
strcpy(temp, words[i]);
strcpy(words[i], words[pos]);
strcpy(words[pos], temp);
}
}
答案 0 :(得分:1)
for(i=0; i<pl; i++);
注意分号,以下块只运行一次。所以你的“单词”不会被正确初始化。
答案 1 :(得分:1)
scanf("%d",&pl);
char words[pl][n];//put after the pl is determined.