Ở đây tôi muốn tạo bộ nhớ động. ở đây tôi không biết kích thước đầu ra và tôi muốn in cuối cùng cuối cùng đầu ra sau khi trong khi vòng lặp.Nhận lỗi phân đoạn trong 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);
}
... hoặc 'NULL' nếu việc phân bổ thất bại. – unwind
Để xây dựng, 'sizeof (kết quả)' và 'sizeof (buffer)' trả về kích thước của các con trỏ mà thực sự được biết ở thời gian biên dịch. Không có cách nào trong tiêu chuẩn C để truy vấn kích thước của một khối được cấp phát động của bộ nhớ. Do đó bạn phải nhớ bạn đã phân bổ bao nhiêu. –
Bạn có thể cho tôi biết nơi tôi phải thay đổi điều và mã của tôi hoạt động tốt không? – user1089679