【发布时间】:2009-12-27 13:48:13
【问题描述】:
我有一个文件指针,我将它与 fgets() 一起使用,以给我一个完整的行以及缓冲区中的新行。 我想替换 1 个字符并在新行之前添加另一个字符。那可能吗? 例如:
buffer is "12345;\n"
output buffer is "12345xy\n"
这是代码:
buff = fgets((char *)newbuff, IO_BufferSize , IO_handle[i_inx]->fp);
nptr = IO_handle[i_inx]->fp;
if(feof(nptr))
{
memcpy((char *)o_rec_buf+(strlen((char *)newbuff)-1),"E",1);
}
else
{
memcpy((char *)o_rec_buf+(strlen((char *)newbuff)-1),"R",1);
}
如您所见,我在这里替换了新行(示例行如上所示)。 我想插入文本并保留新行,而不是我在上面所做的。
【问题讨论】:
-
向我们展示一些代码和您面临的问题。你说的很有可能。但是,缺乏适当的上下文不会帮助我们帮助您。
-
为什么需要演员表?
newbuff和o_rec_buff的类型是什么?你应该避免强制转换,除非它们是必要的,而且为什么需要它们远非显而易见。此外,'if (feof(nptr))' 测试是从 Pascal-think 导入的。您应该测试来自fgets()的返回值。另请注意,如果fgets()调用失败,则缓冲区的内容是未定义的——这意味着您不能依赖它包含任何理智的东西。 (它可能会和失败的调用之前一样,但你不能指望它是这样的。)
标签: c fgets file-handling