这里有一个函数,它从struct获取一个字符串数组,并返回struct integer_array。
#include "string.h"
#include "stdlib.h"
integer_array* my_count_on_it(string_array *p1)
{
integer_array *pusher;
int size = p1->size;
char** str = p1->array;
pusher = (integer_array*) malloc(size*sizeof(integer_array));
for (int i = 0;i<size;i++)
{
pusher->array[i] = strlen(str[i]);
}
return pusher;
}功能原型(C):
typedef struct s_string_array {
int size;
char** array;
} string_array;
typedef struct s_integer_array {
int size;
int* array;
} integer_array;
@param {string_array*} param_1
@return {integer_array*}
integer_array* my_count_on_it(string_array* param_1) {
}
这就是它的工作原理。
输入/返回示例:
输入: "This“、"is”、"the“、"way”
返回值: 4、2、3、3
输入: "aBc“
返回值:3
发布于 2020-05-15 07:38:17
integer_array *pusher初始化良好。但是它中的单个指针也应该被初始化。您可能想要做这个pusher->array = (int*) malloc(sizeof(int) *size)。但老实说,我并没有掌握你想要通过这个函数调用实现什么。您声明了一个integer_array数组,但是您似乎只使用了第一个元素,我怀疑它们是代码中潜在的逻辑错误。
编辑:正如@DavidC.Rankin提到的,也可能是您没有为p1->array分配一个有效值
你可能想让你的功能像这样。
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
typedef struct s_string_array {
int size;
char** array;
} string_array;
typedef struct s_integer_array {
int size;
int* array;
} integer_array;
integer_array* my_count_on_it(string_array *p1)
{
integer_array* pusher = (integer_array*) malloc(sizeof(integer_array));
pusher->size = p1->size;
pusher->array = (int*) malloc(sizeof(int) * p1->size);
for (int i = 0; i < p1->size; i++)
{
pusher->array[i] = strlen(p1->array[i]);
}
return pusher;
}
int main()
{
string_array *p1 = NULL;
/* collect data from user */
// Setup p1{} struct
integer_array* pusher = my_count_on_it(p1);
for (int i = 0; i < pusher->size ; i++)
printf(" %d ", pusher->array[i]);
return 0;
}https://stackoverflow.com/questions/61813922
复制相似问题