C 对字典进行排序。。。。任何东西

C 对字典进行排序。。。。任何东西,c,C,我是C语言的学生,在C语言中使用Kochans编程。我的挑战是为以前编写的程序创建字典排序函数。我被难倒的地方是我没有工具来做这件事,这意味着 没有指针 无字符串头 几乎没有命令,也没有操作字符串的命令(例如strcpy) 我一直在尝试使用一个简单的冒泡排序(字典只有十个条目…),但是由于条目是以一个结构组织的,我得到了只读位置,无法分配值(或者我做得不正确,这总是可能的)。下面是代码,尽管问题出在顶部的函数中。我得到的错误是“无法从只读位置赋值” 我如何在有限制的情况下完成这项任务 另外,我知

我是C语言的学生,在C语言中使用Kochans编程。我的挑战是为以前编写的程序创建字典排序函数。我被难倒的地方是我没有工具来做这件事,这意味着

没有指针 无字符串头 几乎没有命令,也没有操作字符串的命令(例如strcpy)

我一直在尝试使用一个简单的冒泡排序(字典只有十个条目…),但是由于条目是以一个结构组织的,我得到了只读位置,无法分配值(或者我做得不正确,这总是可能的)。下面是代码,尽管问题出在顶部的函数中。我得到的错误是“无法从只读位置赋值”

我如何在有限制的情况下完成这项任务

另外,我知道基本冒泡排序的代码是不完整的,但是我试图解决的问题在这一点上被展示出来了,我被难住了。任何意见都会很好

#include <stdio.h>

struct entry
{
    char word[15];
    char definition[50];
};

int dictionarySort(const struct entry dictionary[],int entries)
{
    int x, y;
    char tempWord;
    char tempDefinition[81];

    for (y = 0; y <= entries; ++y) {
        for (x = 0; x < 15; ++x) {
            if (dictionary[y].word[x] > dictionary[y + 1].word[x])
                tempWord = dictionary[y].word[x];
            dictionary[y].word[x] = dictionary[y + 1].word[x];
            dictionary[y + 1].word[x] = tempWord;
            printf("%c", tempWord);
        }
    }

    return 0;
}

int main(void)
{
    const struct entry dictionary [100] = {
        {"aardvark", "a burrowing african mammal"},
        {"abyss", "a bottomless pit"},
        {"acumen", "mentally sharp; keen"},
        {"addle", "to become confused"},
        {"aerie", "a high nest"},
        {"affix", "to append; attach"},
        {"agar", "a jelly made from seaweed"},
        {"ahoy", "a nautical call of greeting"},
        {"aigrette", "an ornamental cluster of feathers"},
        {"ajar", "partially open"}
    };

    int entries = 10;
    int dictionarySort(const struct entry dictionary[], int entries);

    dictionarySort(dictionary, entries);

    return 0;
}
#包括
结构条目
{
字符字[15];
字符定义[50];
};
int dictionarySort(常量结构条目字典[],int条目)
{
int x,y;
字符时态词;
字符定义[81];
对于(y=0;y字典[y+1]。单词[x])
tempWord=字典[y]。单词[x];
字典[y]。单词[x]=字典[y+1]。单词[x];
字典[y+1]。单词[x]=临时单词;
printf(“%c”,临时字);
}
}
返回0;
}
内部主(空)
{
常量结构条目字典[100]={
{“土豚”,“非洲穴居哺乳动物”},
{“深渊”,“无底洞”},
{“敏锐”,“精神敏锐;敏锐”},
{“混乱”,“变得混乱”},
{“aerie”,“高巢”},
{“附加”、“附加;附加”},
{“琼脂”,“由海藻制成的果冻”},
{“你好”,“航海问候语”},
{“艾格莱特”,“一簇装饰性的羽毛”},
{“半开”、“半开”}
};
整数项=10;
int dictionarySort(const struct entry dictionary[],int entries);
字典排序(字典、条目);
返回0;
}

字典条目是
const
,因为您告诉编译器对参数强制执行此约束:
const struct entry dictionary[]
并且您也以这种方式创建了数组:
const struct entry dictionary[100]={…}


顺便说一句,由于问题的陈述,您不能使用字符串函数,这并不妨碍您编写等效函数。这对学习者来说是一个很好的练习,当然也是你被限制的原因:)

你能再检查一下你问题的标题吗?首先,如果你的单词长15,请定义一个恒定的单词长度,并在代码中使用它,这样如果你决定更改它,你只能在一个地方更改它,不清楚你在问什么。你是在问如何分类吗?或者您正在询问如何实现strcmp/strcpy?我建议您编写一个名为
swap\u entries()
的函数,当给定两个条目时,它将交换它们的内容。它将帮助您使代码非常可读。构建您需要的工具,测试并使用它们!我的意思是,你需要
strlen()
?写下它,测试它,然后继续。那么
int比较\u条目(条目*entry1,条目*entry2)
呢?在这一点上,构建您自己的
排序条目(条目字典、比较条目)
将是非常简单的。多么愚蠢!我移除了const,现在正在路上。我听到你在谈论构建其他功能。我正在使用的书(Kochan的C语言编程)中的练习正是出于这个原因。我从以前的练习中得到了一个相当稳定的数组,但我的问题是,我无法从没有指针的函数返回数组(据我所知),如果我在这里出错,请纠正我。