#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i = 0;
char c, *input;
input = (char *) malloc(sizeof(char));
if(input == NULL) {
printf("NOT ENOUGH SPACE!");
exit(1);
}
printf("Input a string, press ENTER when done: ");
while((c = getchar()) != '\n') {
realloc(input, (sizeof(char)));
input[i++] = c;
}
input[i] = '\0';
printf("\nYou've entered the string: %s\n", input);
}
Das obige Code-Snippet funktioniert gut für kleine Eingabe. Aber es scheitert immer dann, wenn die bereitgestellte Eingabe groß ist. Entweder gibt es einen Laufzeitfehler oder einen Segmentierungsfehler. Bei der Neuzuweisung von Speicherplatz ist möglicherweise ein Fehler aufgetreten. Ich möchte im Grunde ein Zeichen-Array dynamisch vom Benutzer, d. H. Ohne die Kapazität der Eingabe zu erwähnen, kann der Benutzer direkt in beliebiger Größe von Zeichen-Array setzen.Laufzeitfehler in dynamischem Zeichenarray
Das ist großartig Sir. Aber ich bekomme immer noch eine TLE. Nach dem Ersetzen dieses Ausschnitts _while ((c = getchar())! = '\ N') {_ _ realloc (Eingabe, (sizeof (char))); _ _ Eingabe [i ++] = c; _ _} _ mit Ihren. –
Haben Sie alle obigen drei Fehler behoben? –
Nein, grundsätzlich habe ich nur die eine in der while-Schleife angewendet. Sollte ich alle von ihnen anwenden? –