![函数 fpos_t 和 fgetpos 的问题](https://linux22.com/image/844072/%E5%87%BD%E6%95%B0%20fpos_t%20%E5%92%8C%20fgetpos%20%E7%9A%84%E9%97%AE%E9%A2%98.png)
当我尝试使用这些功能时,它会发送此错误:
main.cpp: In function ‘int main()’:
main.cpp:11:17: error: conversion from ‘int’ to non-scalar type ‘fpos_t {aka _G_fpos_t}’ requested
main.cpp:18:20: error: cannot convert ‘fpos_t {aka _G_fpos_t}’ to ‘FILE* {aka _IO_FILE*}’ for argument ‘1’ to ‘int fgetpos(FILE*, fpos_t*)’
代码如下:
#include<stdio.h>
struct registro{
char nombre[5];
};
int main()
{
FILE *fp;
registro datos[5];
fpos_t posicion=5;
fp = fopen("nombres.txt","w"); //CREA UN ARCHIVO DE TEXTO
printf("ingrese nombre: ");
gets(datos[1].nombre);
fgetpos(posicion,fp);
fwrite(&datos[1],5,1,fp); //ESCRIBE EL VALOR DE DATOS EN FP, CON UN TAMAÑO DE 5
fflush(stdin);
fclose(fp);
}
如果您发现任何错误,请帮忙。
答案1
看起来更像是堆栈溢出这类问题,但无论如何,从错误消息中我得到的信息来看,问题出在posiciion=5
代码部分。您正在将一个整数分配给非整数类型fpos_t
,这导致了两个错误。试试看=5
它是否有效。