我使用以下代码作为函数的一部分
int encfile(FILE *fin, FILE *fout, aes *ctx, char* fn)
{ char inbuf[16], outbuf[16];
fpos_t flen;
...
fillrand(inbuf, 1);
..
inbuf[0] = ((char)flen & 15) | (inbuf[0] & ~15);
我收到错误
aggregate value used where an integer was expected
inbuf[0] = ((char)flen & 15) | (inbuf[0] & ~15);
答案 0 :(得分:1)
fpos_t
是实现定义的类型。它只是保证是非数组类型。这意味着它可能是一个结构(在您的情况下似乎问题)。
无论哪种方式,fpos_t
都应该只与fsetpos
和fgetpos
一起使用。您不应该使用它执行任何操作。
对于您的情况,如果您需要知道文件的长度,则应使用fstat
。
另外,如果您无权访问文件名,则可以使用 -
long int old_position = ftell(fp);
fseek(fp, 0, SEEK_END);
long int flen = ftell(fp);
fseek(fp, old_position, SEEK_SET);