У меня есть приведенные ниже фрагменты кода, где я пытаюсь использовать динамически выделяемый массив char *
для хранения строк, поступающих из стандартного ввода.
char **reference
reference = calloc(CHUNK, sizeof(char *));
Я использую временный статический массив, чтобы сначала сохранить строку из stdin
, а затем на основе определенного условия скопировать ее в массив char *
. Я выделяю память отдельным char *
во время выполнения.
reference[no_of_ref]=malloc(strlen(temp_in) + 1);
reference[no_of_ref++]=temp_in;
// printf(" in temp : %s , Value : %s , Address of charp : %p\n",temp_in,reference[no_of_ref-1],reference[no_of_ref-1]);
memset(&temp_in,'\0',sizeof(temp_in));
pre_pip = -1;
}
/*If allocated buffer is at brim, extend it by CHUNK bytes*/
if(no_of_ref == CHUNK - 2)
realloc(reference,no_of_ref + CHUNK);
поэтому no_of_ref
содержит общее количество окончательно полученных строк. например 20. Но когда я печатаю весь массив reference
, чтобы увидеть каждую строку, я получаю ту же самую строку, которая была последней, и печатается 20 раз.