【发布时间】:2021-07-07 07:13:41
【问题描述】:
我正在尝试返回结构内的数组。
我必须在 struct integer_array 中创建一个新数组,然后在最后返回该数组。
任务是取一个字符串数组并计算每个索引以及它的大小。
所以是一个数组
["This", "is", "the", "way"]
应该返回:
[4, 2, 3, 3]
我想出的代码是这样的,但是它返回一个空数组
#ifndef STRUCT_STRING_ARRAY #define STRUCT_STRING_ARRAY typedef struct s_string_array { int size; char** array; } string_array; #endif #ifndef STRUCT_INTEGER_ARRAY #define STRUCT_INTEGER_ARRAY typedef struct s_integer_array { int size; int* array; } integer_array; #endif integer_array* my_count_on_it(string_array* str){ integer_array* intArr; int size = str->size, count =0; intArr= malloc(1); intArr[0].array = malloc(size*sizeof(intArr)); for(int i = 0 ; i < size; i++){ for(int j =0 ; str->array[i][j] != '\0';j++) count++; intArr->array[i] = count; count =0; } return intArr; }
注意我不能改变结构,我只需要实现上面的这个功能
【问题讨论】:
-
intArr[0].array = malloc(size*sizeof(intArr));不应该是sizeof(int)吗? -
阅读
malloc的手册。特别是考虑到 Paul 的评论和您的malloc(1)电话。 -
如何测试数组是否为空?是否可能与您没有设置
intArr->size这一事实有关? -
非常感谢我找到解决方案的提示。
标签: c struct dynamic-memory-allocation c-strings function-definition