字符串数组选择排序(C)

时间:2014-01-19 15:37:38

标签: c

我编译下面的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);
        }
    }

2 个答案:

答案 0 :(得分:1)

for(i=0; i<pl; i++);

注意分号,以下块只运行一次。所以你的“单词”不会被正确初始化。

答案 1 :(得分:1)

scanf("%d",&pl);
char words[pl][n];//put after the pl is determined.