Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 fpos\u t类型变量的格式说明符?_C_File - Fatal编程技术网

C fpos\u t类型变量的格式说明符?

C fpos\u t类型变量的格式说明符?,c,file,C,File,这里我只想看到变量pos的内容;那么需要使用哪种类型的格式说明符呢 #include <stdio.h> void main() { FILE *fileptr = fopen("sample.txt", "r+"); fpos_t pos; int val = fgetpos(fileptr, &pos); } #包括 void main(){ FILE*fileptr=fopen(“sample.txt”、“r+”); FPO_t pos; i

这里我只想看到变量
pos
的内容;那么需要使用哪种类型的格式说明符呢

#include <stdio.h>

void main() {
    FILE *fileptr = fopen("sample.txt", "r+");
    fpos_t pos;
    int val = fgetpos(fileptr, &pos);
}
#包括
void main(){
FILE*fileptr=fopen(“sample.txt”、“r+”);
FPO_t pos;
int val=fgetpos(文件服务器和pos);
}

fpos\u t
在C标准中定义为:

fpos\u t

它是一种完整的对象类型,而不是能够记录唯一指定文件中每个位置所需的所有信息的数组类型

此类型不一定是标量,它可以定义为具有多个成员的
struct
。没有
printf
格式以可读的方式输出。有些系统可能需要执行复杂的任务来处理文本文件,并非每台计算机都是PC

如果您对实现感兴趣,可以将其内容转储为十六进制字节:

#include <stdio.h>

int main(void) {
    FILE *fileptr = fopen("sample.txt", "r+");
    fpos_t pos;

    if (fileptr && fgetpos(fileptr, &pos) == 0) {
        printf("contents of pos: ");
        for (size_t i = 0; i < sizeof(pos); i++) {
            printf("%02X", ((unsigned char *)&pos)[i]);
        }
        printf("\n");
    }
    return 0;
}
#包括
内部主(空){
FILE*fileptr=fopen(“sample.txt”、“r+”);
FPO_t pos;
if(fileptr&fgetpos(fileptr&pos)==0){
printf(“pos的内容:”);
对于(大小i=0;i
在许多现代系统上,您将获得
0000000000000000
,因为64位整数足以表示文件中的偏移量所需的所有信息,但您不应依赖于此。

fpos\u t
是一个不透明的结构

此外,C标准没有定义一种检查其内容的方法(没有在Java等其他语言中看到的
toString()
胡说八道)

因此,如果你想要一个便携式解决方案,那么你就不走运了


如果是为了在特定平台上调试,那么您可能能够计算出它的内容(通常它包含一个整数类型,指定的字节数略多于一个),并适当地输出。

fpos\u t
是标量还是聚合?也许您想改为使用?打印任何对象,您可能会发现有用。