Ich versuche, ein kleines Programm zu schreiben, das realloc(), getchar() und einige Zeigerarithmetik verwendet, um ein Array von Zeichen im Speicher zu speichern.Versuchen, Realloc() zu verwenden, Core-Dump
Ich habe eine Funktion namens "inputArray" (in convert.c), die einen Zeiger auf ein char erhält (was NULL ist, in main.c deklariert), wird dann mit einem char neu zugewiesen bis getchar() erhält ein '\ n' Zeichen. Die Funktionen scheinen in Ordnung zu sein, aber wenn ich dann versuche, die Zeichenfolge zurück in main.c zu drucken, bekomme ich einen Fehler "segmentation fault (core dumped)". Ich habe Stunden gesucht, kann nicht finden, wo das Problem ist. Vielen Dank!
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);
Suchen Sie nach und lesen Sie über * emulieren Pass durch Referenz in c *. –
'sizeof (char)' wird immer 1 sein ..... (gut, vielleicht 2, wenn Sie Zeichen doppelter Breite verwenden - aber es ist eine feste Größe, die nicht das ist, was Sie wollen). – gilez