Qui voglio creare dinamicamente la memoria. qui non conosco le dimensioni dell'output e voglio stampare l'ultimo output finale dopo il ciclo while.Errore di segmentazione in Realloc
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char *sdpCommand = "sdptool browse 04:18:0F:B1:48:B5";
FILE *fp;
fp = popen(sdpCommand, "r");
char *results = 0;
if (fp == NULL) {
printf("Failed to run command\n");
return;
}
char* buffer = malloc(514);
while (fgets(buffer, strlen(buffer) - 1, fp) != NULL) {
realloc(results, strlen(results) + strlen(buffer));
memcpy(results + strlen(results), buffer, strlen(buffer));
}
printf("Output ::: %s", results);
/* close */
pclose(fp);
sleep(1);
}
... o 'null' se l'assegnazione non è riuscita. – unwind
Per elaborare, 'sizeof (results)' e 'sizeof (buffer)' restituiscono la dimensione dei puntatori che è effettivamente nota al momento della compilazione. Non c'è modo in C standard di interrogare per la dimensione di un blocco di memoria assegnato dinamicamente. Quindi devi ricordare quanto hai assegnato. –
Per favore, dimmi dove devo cambiare la cosa e il mio codice funziona bene? – user1089679