gpt4 book ai didi

c - char* 的 printf 出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:35 25 4
gpt4 key购买 nike

我正在尝试使用 printf(必须)从套接字读取并打印到标准输出;

但是,每次我从健全的网站读取特定文件(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);

谢谢。

最佳答案

response_data 可能不是 NUL ('\0') 终止的,因此 printf 继续超过字符串的末尾。或者它可能包含 % 指令,但 printf 找不到更多参数。

相反,告诉 printf 读取多远,解释字符串中的任何 % 指令。

printf("%.*s", total_read, response_data);

请注意,如果 response_data 包含嵌入的 NUL,即使 total_read 更长,printf 也会停在那里。

关于c - char* 的 printf 出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com