Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_List_Arraylist - Fatal编程技术网

C 打印阵列列表大小崩溃

C 打印阵列列表大小崩溃,c,arrays,list,arraylist,C,Arrays,List,Arraylist,我有一个实现arraylist(动态数组)的C程序,但是我不明白如何或为什么我不能打印数组大小。当我尝试这样做时,程序崩溃了。下面是程序 arraylist.c #include "arraylist.h" void arraylist_initial(struct arraylist *list) { list->size = 0; list->data = NULL; } int arraylist_get_size(const struct arraylist li

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

arraylist.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;
}
它只是撞坏了,我不明白


谢谢你

对不起,我记得有一次你不能用C传递structs。看起来你现在可以了。它们一直在改变

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

而不是:

printf(arraylist_get_size_list(list));
尝试:


谢谢你的回答。但是,如果我尝试你所说的,我会得到错误:arraylist\u get\u size参数1的类型不兼容arraylist_get_size的类型冲突请参阅我的更新。结构的传递ok。我认为您的错误在于传递给printf的内容。谢谢。它可以工作。但是对于实际代码,它说大小是7。但是,它不应该是6吗?因为它从索引0开始,我认为应该是0,1,2,3,4,5,6,为什么大小是7?
printf(arraylist_get_size_list(list));
printf(arraylist_get_size_list(list));
printf("size: %d\n", arraylist_get_size_list(list));