Я пытаюсь сохранить динамически выделенный массив строк, которые считываются с использованием системного вызова read в c. Вот небольшой пример того, что я пытаюсь сделать:calloc/malloc и читать странное поведение?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void processInput() {
char ** array = (char **) calloc(20, sizeof(char*));
int arrayIndex = 0;
while(1) {
printf("Type something: ");
fflush(stdout);
char* buffer;
int readResult = read(0, buffer, 100);
array[arrayIndex] = (char*)calloc(readResult, sizeof(char));
}
}
Однако, это вызывает какие-то странные вопросы:
Type something: a Type something: Type something: a Type something: Type something: abcdefg Type something: Type something: Type something: Type something: Type something: Type something: Type something: Type something:
Есть ли объяснение этому? Я не могу понять, почему это происходит.
'char * buffer; readResult = read (0, buffer, 100); 'Использование неинициализированных переменных - особенно неинициализированных указателей - может только закончиться слезами. –
Вы не наращиваете 'arrayIndex' – Kevin
К сожалению, пример был несколько неаккуратным. вы правы, что я не увеличивал числовое значение arrayIndex, но это не было важно для примера. Однако на практике вы на 100% правильны, что arrayIndex нужно будет увеличивать. В противном случае он не будет хранить ничего, кроме последнего добавленного элемента в индексе 0: P. – Ryan