Я пытаюсь читать из сокета и печатать на stdout с помощью printf (a must);printf of char * получает ошибку сегментации
Однако я получаю ошибку сегментации каждый раз, когда я читаю конкретный файл (HTML) с разумного веб-сайта.
Пожалуйста, взгляните на этот код и скажите мне, что случилось.
int total_read = 0;
char* read_buff = malloc(BUF_SIZE);
char* response_data = NULL;
if (read_buff == NULL){
perror("malloc");
exit(1);
}
while((nbytes = read(fd, read_buff, BUF_SIZE)) > 0){
int former_total = total_read;
total_read += nbytes;
response_data = realloc(response_data, total_read);
memmove(response_data + former_total, read_buff, nbytes); //start writing at the end of spot before the increase.
}
if (nbytes < 0){
perror("read");
exit(1);
}
printf(response_data);
Thank you.
Вы должны нажать на значок галочки-форме ответов, которые решают вашу проблему. – erjiang 2010-12-05 20:55:19
Что может быть в response_data? Если он содержит символы форматирования printf, printf попытается получить доступ к некоторым параметрам, которые вы не передали. Попробуйте вместо этого ставить? – 2010-12-05 20:55:55