代码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/

10-09 06:47