标签: fgetpos

ftello/fseeko vs fgetpos/fsetpos

ftello/fseeko和fgetpos/fsetpos有什么区别?两者似乎都是文件指针获取/设置功能,使用不透明偏移类型有时允许64位偏移.

它们是在不同平台上还是由不同标准支持?它使用的偏移类型是否更灵活?

顺便说一句,我知道fgetpos/fsetpos和ftell/fseek,但这不是重复.这个问题询问FTELL/FSEEK,答案是适用于ftello/fseeko.

c file-io fseek fgetpos ftell

11
推荐指数
1
解决办法
2774
查看次数

确定大于4GB的文件的大小

代码目前正在执行此操作,fgetpos会处理大于4GB的文件,但搜索会返回错误,所以任何想法如何寻找结束file > 4GB

fpos_t currentpos;

sok=fseek(fp,0,SEEK_END);
assert(sok==0,"Seek error!");

fgetpos(fp,&currentpos);
m_filesize=currentpos;
Run Code Online (Sandbox Code Playgroud)

c c++ fseek fgetpos

8
推荐指数
2
解决办法
2748
查看次数

在C中同时读取和写入文件

假定交换文件中的每两行,直到仅剩一行或所有行都用完为止。我不想使用其他文件。

这是我的代码:

#include <stdio.h>

int main() {
    FILE *fp = fopen("this.txt", "r+");
    int i = 0;
    char line1[100], line2[100];
    fpos_t pos;
    fgetpos(fp, &pos);

    //to get the total line count
    while (!feof(fp)) {
        fgets(line1, 100, fp);
        i++;
    }

    i /= 2;  //no. of times to run the loop
    rewind(fp);

    while (i-- > 0) {  //trying to use !feof(fp) condition to break the loop results in an infinite loop
        fgets(line1, 100, fp);
        fgets(line2, 100, fp);

        fsetpos(fp, &pos);

        fputs(line2, fp);
        fputs(line1, fp);

        fgetpos(fp, …
Run Code Online (Sandbox Code Playgroud)

c fgetpos fgets file-handling

5
推荐指数
1
解决办法
3423
查看次数

c ++奇怪地改变了fgetpos

如果我跑:

FILE* pFile = fopen("c:\\08.bin", "r");
fpos_t pos;
char buf[5000];

int ret = fread(&buf, 1, 9, pFile);
fgetpos(pFile, &pos);
Run Code Online (Sandbox Code Playgroud)

我得到ret = 9和pos = 9.

但是,如果我跑

FILE* pFile = fopen("c:\\08.bin", "r");
fpos_t pos;
char buf[5000];

int ret = fread(&buf, 1, 10, pFile);
fgetpos(pFile, &pos);
Run Code Online (Sandbox Code Playgroud)

ret = 10如预期的那样,但是pos = 11!

怎么会这样?

c++ fgetpos fread

2
推荐指数
1
解决办法
540
查看次数

标签 统计

fgetpos ×4

c ×3

c++ ×2

fseek ×2

fgets ×1

file-handling ×1

file-io ×1

fread ×1

ftell ×1