Ich möchte Eingabe char von Char lesen und speichern Sie es als ein Wort in Char * Array. Ich weiß nicht, wie lange die Eingabe sein wird, also möchte ich das Memory dynamisch zuweisen. Das Programm endet, wenn das Zeichen Leerzeichen ist. Wie kann ich dies mit Realloc tun? Es ist mein Code:Einlesen von char durch char mit realloc in C
#include <stdio.h>
int main(void) {
char *word=malloc(1*sizeof(char));
char c;
int numOfChars=0;
c=getchar();
word[0]=c;
numOfChars++;
while((c=getchar())!=' '){
numOfChars++;
realloc(word,numOfChars);
word[numofChars-1]=c;
}
printf("%s", word);
return 0;
}
Beispiel Eingabe: Word
Beispiel Ausgabe: Word
aussehen könnte nicht vergessen, dass Strings muss NUL beendet (haben ein ‚\ 0‘ am Ende sonst Ihre 'printf' wird der Grenzen ausgelesen. (Das NUL selbst benötigt ein zu speicherndes Byte. Ich überlasse es Ihnen, herauszufinden, was Sie mit Ihrer Array-Größe machen müssen, um das zu handhaben.) Btw, 'sizeof (char)' ist definiert als '1 '. – Jite
Ich würde nicht empfehlen, realloc zu verwenden, um einer Zeichenkette eine weitere Position zuzuweisen.Dies ist ineffizient. Stattdessen versuchen Sie, die Größe bei Bedarf zu verdoppeln und den Allokationsraum am Ende auf das Minimum zu verkleinern. – Picodev