【发布时间】:2020-08-31 23:10:10
【问题描述】:
这里我有一个函数,它从 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]
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读About 页面并访问描述How to Ask a Question 和How to create a Minimal, Complete, and Verifiable example 的链接。提供必要的详细信息,包括您的代码、编译器警告和相关错误(如果有),将允许这里的每个人帮助您解决问题。 (也就是说——我的水晶球怀疑你在
p1->array中有未初始化的指针,这样strlen(str[i]);陨石坑......) -
如何调用
my_count_on_it()。传入了什么,调用者如何定义和初始化/设置? -
重点是,没有A Minimal, Complete, and Verifiable Example (MCVE),我们只能猜测。您发布的内容本质上没有任何错误(或正确)。
-
老实说,在您的应用程序崩溃后看到
(core dumped)真是太棒了!这意味着操作系统已经创建了一个核心文件,您可以使用调试器打开该文件并查看源代码中发生崩溃的位置。这是您学习如何分析这样一个核心文件的绝佳机会,这对您将来无疑会有所帮助。 -
函数 `my_count_on_it' 实际上被定义了两次,这可能导致实现被覆盖。你不应该对原型使用大括号。
标签: c arrays function runtime-error structure