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

标签 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);
        }
    }

最佳答案

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

注意分号,下面的 block 只会运行一次。所以你的“单词”将无法正确初始化。

关于c - 字符串数组选择排序 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21218798/

相关文章:

c - Sleep() 终止 WindRiver 中的线程

c - 在已知参数数量的情况下,c 中的前向可变参数函数

c - 按位运算——算术运算

c - 初始化器不是常量。马洛克

c - 结构和 union :从性能的角度来看哪个更好?通过值或指针传递参数?

c - 在 C 中通过 UDP UNIX 套接字发送结构

c++ - C/C++ 中的大数据集表示

使用 system() 使用 gcc 进行编译

求平均值的c程序

c - 如何获取 xv6 中内核启动后的系统调用次数?