Я пытаюсь написать небольшую программу, которая использует realloc(), getchar() и некоторую арифметику указателя для хранения массива символов в памяти.Попытка использования realloc(), получение ядра сбрасывается
У меня есть функция, называемая «inputArray» (в convert.c), которая получает указатель на char (который начинается с NULL для начала, объявленный в main.c), а затем перераспределяется с одним символом до тех пор, пока getchar() получает символ '\ n'. функции, похоже, работают нормально, но затем, когда я пытаюсь напечатать строку обратно в main.c, я получаю ошибку «segmentation fault (core dumped)». Я искал часы, не могу найти, где проблема. Благодаря!
main.c:
# include "convert.h"
int main()
{
char * string = NULL;
inputArray(string);
printf("%s", string);
free(string);
return 0;
}
convert.c:
#include "convert.h"
void inputArray(char * array)
{
/*pointer to the array*/
char * ptr = NULL;
/*stores the char*/
char c = 0;
/*counter used for pointer arithmetic*/
int count = 0;
/*loop for getting chars in array*/
while ((c = getchar()) != '\n')
{
array = realloc(array, sizeof(char));
ptr = array + count;
*ptr = c;
++count;
}
/*add the null char to the end of the string*/
array = realloc(array, sizeof(char));
ptr += count;
*ptr = '\0';
}
convert.h:
#include <stdio.h>
#include <stdlib.h>
void inputArray(char * array);
Поиск и чтение про * эмулирующий проход по ссылке в c *. –
'sizeof (char)' всегда будет 1 ..... (ну, возможно, 2, если вы используете символы двойной ширины, но это фиксированный размер, который вам не нужен). – gilez