動的配列とに問題がありmalloc
ます。私はCにかなり慣れていないので、新人の間違いを許してください(そしてアドバイスしてください)。
問題は、配列(この場合はinput_string)を作成し、それをに渡すことfunc2
です。次にfunc2
、テストを実行して、input_stringの最初の要素を出力します。
これは、の前の最初の印刷では期待どおりに機能しますmalloc
が、後はmalloc
何も印刷されません。printf
toステートメントの間に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;
}
追伸:宣言されていない変数は、このコードスニペットの外部で宣言されています。
アップデート
すべての返信とアドバイスをありがとう。大変感謝しております。