gpt4 book ai didi

c - 我使用的语法有什么问题

转载 作者:行者123 更新时间:2023-11-30 20:59:36 25 4
gpt4 key购买 nike

您好,有人可以帮我解决这个错误吗?在分区 block 中,它说我给“结构列表枢轴”一个不兼容的类型。它说我需要为我的问题添加更多细节,所以我要继续写更多的东西,只是忽略。

struct list {
char first;
char second;
char third;
char fourth;
};

struct list *plist[num];

for(int i = 0; i < num; i++) {
plist[i] = &list[i];
}

这是我对列表进行分区的地方。分区是不是很有趣

int part(struct list **A, int start, int finish) {

//Error is popping up in this block
struct list pivot = A[start]->first;
int i = start;
int j = finish;
while(1) {

while(strcmp(A[i]->first, pivot) < 0) {

i = i + 1;
}
while(strcmp(A[j]->first, pivot) > 0) {

j = j - 1;
}
if(i < j){

swap(&A[i], &A[j]);

} else {

return j;

}
}
}

这是我的排序函数。

void sort(struct list **A, int start, int finish){
if(start < finish){
int p = part(A, start, finish);
sort(A, start, p);
sort(A, p + 1, finish);
}
}

这是我尝试打印排序列表的地方,但它还不起作用......

sort(plist, 0, num);

for(int i = 0; i < num; i++) {

printf("%s \n\n", plist[i]->first);
}

最佳答案

考虑到数据成员first在代码中的使用方式,它被声明为字符数组或指向字符的指针。无论如何,此声明中的初始化

struct list pivot = A[start]->first;

没有意义,因为结构体和字符数组(或指向字符的指针)显然是不兼容的类型。

看来你可以改写

const char *pivot = A[start]->first;

如果你想使用结构对象作为枢轴,那么你应该编写

struct list pivot = *A[start];

并进一步在代码中使用表达式 pivot.first 而不是 pivot ,例如

while(strcmp(A[i]->first, pivot.first) < 0) {

关于c - 我使用的语法有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46614603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com