代码1的一部分:-
while(1)
{
ch=fgetc(pt);
if(c==EOF)
{
break;
}
if(c==' ')
{
fputc('z',pt);
}
}
代码2的一部分:-
while(1)
{
ch=fgetc(pt);
if(c==EOF)
{
break;
}
if(c==' ')
{
fseek(pt,0,SEEK_CUR);
fputc('z',pt);
fseek(pt,0,SEEK_CUR);
}
}
我想替换文件中每个
space
之后的下一个字符。该文件由指针指向。这两个代码都没有显示错误并且运行良好,但是当我在外部打开
pt
文件时,第一个代码没有执行任何操作,而第二个代码成功地替换了.txt
之后的下一个字符。显然,
space
起了作用。所以我无法理解它在第二段代码中做了什么?
最佳答案
在这里使用fseek()
C标准需要在更新流的读写操作之间,或者在写和读之间进行定位操作。这是写和读之间的定位操作。它不是一个no-op;它将流放入一个模式,该模式允许下一个fgetc()
按照C标准的要求跨平台正确、可靠地工作。
编辑:
2fseek()
调用是必需的,因为第一个调用充当fgetc()
和随后的fputc()
调用之间的“无操作”调用。在fputc()
之后,第二个充当fputc()
和随后的fgetc()
调用之间的“no op”。(因为循环正在运行)
关于c - 需要c中的fseek(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21965142/