Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的访问冲突_C_Pointers_Struct_Access Violation - Fatal编程技术网

C语言中的访问冲突

C语言中的访问冲突,c,pointers,struct,access-violation,C,Pointers,Struct,Access Violation,我试图通过使用指向结构对象的指针,使用qsort()对结构进行排序。但是,当我试图运行该程序时,抛出了一个访问冲突错误。我迷路了 这是我的数组: struct studenten_typ sfeld[] = { { 123456, 1273.17, { "Erna", "Schlaukopf" } }, { 213456, 1273.17, { "Erna", "Meier" } }, {

我试图通过使用指向结构对象的指针,使用
qsort()
对结构进行排序。但是,当我试图运行该程序时,抛出了一个访问冲突错误。我迷路了

这是我的数组:

 struct studenten_typ sfeld[] = {
    { 123456, 1273.17, { "Erna", "Schlaukopf" } },
    { 213456, 1273.17, { "Erna", "Meier" } },
    { 423456, 1373.67, { "Emil", "Meier" } },
    { 473456, 1193.17, { "Anton", "Mueller" } },
    { 503456, 1473.17, { "Anna", "Mueller" } },
    { 523456, 1063.17, { "Max", "Muster" } },
    { 573456,  945.17, { "Eva", "Muster" } },
    { 723456, 1123.17, { "Xaver", "Kurz" } },
    { 953456, 1273.17, { "Erna", "Schlaukopf" } },
    { 773456, 1243.17, { "Karl", "Kurz" } }
};
struct studenten_typ {
    /** Matrikelnummer als eindeutiges Kriterium */
   int matrikel_nr;
    /** Monatsgehalt der DH-Studenten*/
    double gehalt;
    /** Name. */
    struct namens_typ name;
}
这是我在main中的qsort函数(这里是我得到错误的地方)

这是我的比较函数

int stud_matrnr_aufst_vgl_fkt_ptr(const void*v1_ptr, const void*v2_ptr)
{
    struct studenten_typ* p1 = (void*)v1_ptr;
    struct studenten_typ* p2 = (void*)v2_ptr;
    // .... ???
    if (p1->matrikel_nr > p2->matrikel_nr)
        return 1;
    if (p1->matrikel_nr < p2->matrikel_nr)
        return -1;
    if (p1->matrikel_nr == p2->matrikel_nr)
        return 0;
}

qsort size参数是每个元素的大小,而不是整个数组的大小。从:

函数的作用是:使用大小为的nmemb元素对数组进行排序


因此
sizeof(sfeld)
应该是
sizeof(sfeld[0])

qsort size参数是每个元素的大小,而不是整个数组的大小。从:

函数的作用是:使用大小为的nmemb元素对数组进行排序


因此
sizeof(sfeld)
应该是
sizeof(sfeld[0])

您是否尝试过在调试器中逐行运行代码,同时监视所有变量的值,以确定程序在哪一点停止按预期运行?如果未尝试此操作,则可能需要阅读以下内容:
qsort
size参数是每个元素的大小,而不是整个数组的大小。因此
sizeof(sfeld)
应该是
sizeof(sfeld[0])
。您是否尝试过在调试器中逐行运行代码,同时监视所有变量的值,以确定程序在哪一点停止按预期运行?如果未尝试此操作,则可能需要阅读以下内容:
qsort
size参数是每个元素的大小,而不是整个数组的大小。所以
sizeof(sfeld)
应该是
sizeof(sfeld[0])
.thaaaanks:)thaaaanks:)
struct studenten_typ {
    /** Matrikelnummer als eindeutiges Kriterium */
   int matrikel_nr;
    /** Monatsgehalt der DH-Studenten*/
    double gehalt;
    /** Name. */
    struct namens_typ name;
}