【问题标题】:"invalid conversion from 'FILE* {aka _iobuf}' to 'int'" error“从 'FILE* {aka _iobuf}' 到 'int' 的无效转换”错误
【发布时间】:2014-10-23 15:43:37
【问题描述】:

我想更改之前创建的 *.txt 文件的大小。为此,我使用chsize。 代码:

#include <iostream>
#include <stdio.h>
#include <io.h>

using namespace std;

int main()
{
    FILE *wfile; 
    wfile = fopen("test.exe", "a");
    chsize(wfile, 1024); //error is here
    file.close();
    return 0;
}

这是错误:

[错误] 从 'FILE* {aka _iobuf*}' 到 'int' 的无效转换 [-fpermissive]

问:这里有什么问题?我用fopen打开了文件,它在互联网上的解释是正确的。

Q2:我喜欢 Windows 作为操作系统,但我不想学习 C++ 的 Windows API 或类似的东西。是否可以选择使用便携式设备?

【问题讨论】:

  • chsize() 采用整数作为文件描述符。您无法将 FILE* 转换为 -- qnx.com/developers/docs/660/…
  • file.close(); 也不好,应该是fclose(wfile);
  • A2Q2:使用&lt;iostream&gt;
  • @PiotrS。我不知道 iostream 是否真的做了文件 API 可以做的所有事情。我猜 boost::filesystem 会做所有事情。

标签: c++ windows


【解决方案1】:

chsize 的第一个参数是文件描述符而不是 FILE*。

你可以使用函数“fileno”。

How can I convert a file pointer ( FILE* fp ) to a file descriptor (int fd)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多