Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c中fseek()的需要_C_File Handling_Fseek - Fatal编程技术网

c中fseek()的需要

c中fseek()的需要,c,file-handling,fseek,C,File Handling,Fseek,第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;

第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);
    }
}
我想替换文件中每个
空格后的下一个字符。该文件由指针
pt
指向

这两个代码都没有显示错误并且运行良好,但是当我从外部打开
.txt
文件时,第一个代码没有执行任何操作,而第二个代码成功地替换了
空格后的下一个字符

清楚地
fseek(pt,0,SEEK\u CUR)正在发挥作用

因此,我无法理解它在第二个代码中做了什么?

这里使用
fseek()
——C标准要求在更新流上的读操作和写操作之间,或者在写操作和读操作之间进行定位操作。这是写入和读取之间的定位操作。这不是一个禁止的行动;它将流置于一种模式,该模式允许下一个
fgetc()
跨平台正确、可靠地工作,如C标准所要求

编辑:


2
fseek()
调用是必需的,因为第一个调用充当
fgetc()
和后续
fputc()
调用之间的“无操作”调用。在
fputc()
之后,第二个函数充当
fputc()
和随后的
fgetc()
调用之间的“no op”。(因为循环正在运行)

您确定第二个代码中的是fputc('z',ft)而不是fputc('z',pt)?@AndyFaizan:哦,对不起……我的错误!!!!这就是
pt
@kevingomes:这里使用fseek()——C标准要求在更新流上的读操作和写操作之间,或者在写操作和读操作之间进行定位操作。这是写入和读取之间的定位操作。这不是一个禁止的行动;它将流置于允许下一个fgetc()跨平台正确、可靠地工作的模式,正如C标准所要求的,从注释中可以看出——“它将流置于允许下一个fgetc()正确工作的模式”。否则它会像代码的第1部分那样出现故障。我想大概是it@AndyFaizan:您应该回答这个问题。那么为什么需要两个fseek()。请尝试删除后一个fseek(),然后检查,它没有任何作用