gpt4 book ai didi

c - 写入文件时排除终止符

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:55 24 4
gpt4 key购买 nike

我正在通过 C 中的套接字接收一条写入缓冲区的消息。该消息在末尾添加了一个终止符 (@@),因此我知道何时停止写入缓冲区,但是,缓冲区比消息大得多。有没有办法只写到终止符而不包括终止符,从而丢弃缓冲区的其余部分?

也许有位置指针?

char *pos;
FILE* fp = fopen("tempfile", "w+");
pos = strstr(buffer, "@@");
pos = '\0'; // Maybe I could stop the writing with NULL?

fwrite(buffer, 1, BUF_SIZE /*too big*/, fp);
fclose(fp);

我需要获取包含消息的缓冲区部分的大小,或者可能只向我的文件写入特定字符。无论哪种方式都行得通。

最佳答案

语句 fwrite(buffer, 1, BUF_SIZE, fp) 将写入 BUF_SIZE 字节,无论缓冲区的实际内容如何,​​也不管它是否包含 '\0' 被视为“字符串终止”。所以唯一的方法就是告诉 fwrite 要写入的元素的正确数量;这可以通过指针算法轻松计算:

fwrite(buffer, 1, pos-buffer, fp)

当然,您必须检查是否 pos != NULL 等等;但我认为这是直截了当的。

关于c - 写入文件时排除终止符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45745757/

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