gpt4 book ai didi

c - 打印数组列表大小崩溃

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

我有一个实现 arraylist (动态数组)的 C 程序,但是我不明白如何或为什么无法打印数组大小。当我尝试这样做时,程序崩溃了。程序如下。

数组列表.c

#include "arraylist.h"

void arraylist_initial(struct arraylist *list) {
list->size = 0;
list->data = NULL;
}

int arraylist_get_size(const struct arraylist list) {
return list.size;
}

value_type* arraylist_get_data_collection(const struct arraylist list) {
return list.data;
}

void arraylist_set_data_collection(struct arraylist *list, value_type* data) {
list->data = data;
}

void arraylist_add(struct arraylist *list, value_type value) {
int size = arraylist_get_size(*list);
value_type *new_data;

new_data = realloc(list->data, (size + 1) * sizeof new_data[0]);

if (new_data)
{
new_data[size] = value;
arraylist_set_data_collection(list, new_data);
++list->size;
}
}

value_type arraylist_get(const struct arraylist list, int index) {
if(index < arraylist_get_size(list)) {
return list.data[index];
}
else {
return NULL;
}
}

int arraylist_indexof(const struct arraylist list, value_type value) {
int index = 0;
for(; index != arraylist_get_size(list); ++index) {
if(strcmp(list.data[index], value) == 0) {
return index;
}
}

return -1;
}

int main(void){
struct arraylist list;

arraylist_initial(&list);

arraylist_add(&list, "1");
arraylist_add(&list, "2");
arraylist_add(&list, "3");
arraylist_add(&list, "4");
arraylist_add(&list, "5");
arraylist_add(&list, "6");
arraylist_add(&list, "7");
arraylist_get_size(list);


int index = 0;
for(; index != 8; ++index) {
printf("CHECK: %s\n", arraylist_get(list, index));

}

return 0;
}

数组列表.h

#define _ARRAYLIST_H

#include <stdio.h>

typedef char* value_type;

struct arraylist {
int size;
value_type* data;
};

extern void arraylist_initial(struct arraylist *list);
extern int arraylist_get_size(const struct arraylist list);
extern value_type* arraylist_get_data_collection(const struct arraylist list);
extern void arraylist_set_data_collection(struct arraylist *list, value_type* data);
extern void arraylist_add(struct arraylist *list, value_type value);
extern value_type arraylist_get(const struct arraylist list, int index);
extern int arraylist_indexof(const struct arraylist list, value_type value);

如果我这样做的话,在 arraylist.c 中

printf(arraylist_get_size_list(list));

它就崩溃了,我不明白?

谢谢

最佳答案

抱歉,我记得以前不能用 C 传递结构。现在看起来可以了。他们不断改变事情。

真正的问题是:printf 将字符串作为第一个参数。

而不是:

printf(arraylist_get_size_list(list));

尝试:

printf("size: %d\n", arraylist_get_size_list(list));

关于c - 打印数组列表大小崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40711640/

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