我遇到了动态数组和malloc
. 我对C相当陌生,所以请原谅(并建议)任何新手错误。
问题是我创建了一个数组(在本例中为 input_string)并将其传递给func2
. 然后在func2
我做一个测试,打印出 input_string 的第一个元素。
这在 之前的第一个打印输出中按预期工作malloc
,但在之后malloc
它不打印任何内容。这对我来说似乎很奇怪,因为在 toprintf
语句之间我对 input_string 什么都不做。
我假设我处理这些数组不正确,但我不确定。
这是有问题的代码片段:
更新
... // includes not in snippet
/* CONSTANTS */
#define LINE_LEN 80
/* Function declarations */
char* func1(void);
char* func2(int tl, char* input_string);
int main(void) {
char* input_string;
int tab_length;
char* output_string;
input_string = func1();
output_string = func2(tl, input_string);
return 0;
}
char* func1(void) {
char cur_char;
char* input_ptr;
char input_string[LINE_LEN];
while ((cur_char = getchar()) != '\n' && chars_read < 80) {
// iterate and create the array here
}
input_ptr = &input_string[0]; /* set pointer to address of 0th index */
return input_ptr;
}
char* func2(int tl, char* input_string) {
int n = 0, output_idx = 0;
char* output_ptr;
printf("\nBefore malloc: %c ", *(input_string));
output_ptr = malloc(tab_length * chars_read+1);
if (output_ptr == NULL) {
printf("Failed to allocate memory for output_ptr.\nExiting");
exit(1);
}
printf("\nAfter malloc: %c ", *(input_string));
...
return output_ptr;
}
Ps:任何未声明的变量都已在此代码段之外声明。
更新
感谢所有的回复和建议。这是非常赞赏。