Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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
在fwrite调用中循环,直到缓冲区大小写入C/C++; 我设计了一个 C++ +/Cuff>回调函数,它将代码> >大小ZigSt/字节从缓冲区写入C++中的文件。但是,为了保持理智,我必须检查fwrite是否返回errno,例如eaces。函数本身是C和C++之间的接口。果然,我写了一个伪代码(几乎是真代码):_C++_C_Io_Libcurl - Fatal编程技术网

在fwrite调用中循环,直到缓冲区大小写入C/C++; 我设计了一个 C++ +/Cuff>回调函数,它将代码> >大小ZigSt/字节从缓冲区写入C++中的文件。但是,为了保持理智,我必须检查fwrite是否返回errno,例如eaces。函数本身是C和C++之间的接口。果然,我写了一个伪代码(几乎是真代码):

在fwrite调用中循环,直到缓冲区大小写入C/C++; 我设计了一个 C++ +/Cuff>回调函数,它将代码> >大小ZigSt/字节从缓冲区写入C++中的文件。但是,为了保持理智,我必须检查fwrite是否返回errno,例如eaces。函数本身是C和C++之间的接口。果然,我写了一个伪代码(几乎是真代码):,c++,c,io,libcurl,C++,C,Io,Libcurl,关键是要确保size\u t write=size字节已写入文件。我之所以使用fwrite代替任何其他方法,是因为函数write\u data作为回调传递给一个方法,该方法执行HTTP请求,进行一些文件传输,并将文件内容写入本地文件。 我不确定这种方法是否有效。你们能告诉我这种方法是否有效,或者我可能遇到的潜在问题吗?如果有更好的方法? 谢谢fwrite返回写入的成员数,因此在写入成员时,您需要推进ptr,如下所示: size_t done = 0; while (done < nmem

关键是要确保
size\u t write=size
字节已写入文件。我之所以使用
fwrite
代替任何其他方法,是因为函数
write\u data
作为回调传递给一个方法,该方法执行
HTTP
请求,进行一些文件传输,并将文件内容写入本地文件。 我不确定这种方法是否有效。你们能告诉我这种方法是否有效,或者我可能遇到的潜在问题吗?如果有更好的方法?
谢谢

fwrite
返回写入的成员数,因此在写入成员时,您需要推进
ptr
,如下所示:

size_t done = 0;

while (done < nmemb) {
    size_t written = fwrite((char*)ptr + done * size, size, nmemb - done, (FILE*)stream);
    done += written;
    if (done < nmemb) {
        /* Not all has been written. Some kind of error may have occurred. */
        if (ferror((FILE*)stream)) {
            ...
        }
    }
}
size\u t done=0;
while(完成
我认为您需要的是一个健壮的I/o。
这个链接和健壮的IO包可能会帮助你:

为什么C++中使用C函数?文件IO处理得更好,是C++ iMo .@ AlxyReal.LeVaseURR。我之所以使用FrAdt而不是其他方法是因为函数WreEngDATA作为回调传递给一个HTTP请求的方法,使一些文件传输并将文件内容写入本地文件,为什么您要重试<代码> Eccess < /C>?什么样的条件会改变,使其在未来工作?如果替换为while循环。如有必要,放置usleep函数。谁打开输出文件,您还是库?如果是你,你可以很容易地使用C++ <代码> fStase而不是C<代码>文件*/COD>。您只需要从
void*
来回转换
fstream
对象的地址。您是否有我可以查看的引用,以查看写入返回的错误?结果证明我错了
fwrite
不返回错误代码。我已经编辑了我的答案。你需要检查返回值是否为零。如果是的话,您可能希望打破
while
循环。
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
size_t done = 0;

while (done < nmemb) {
    size_t written = fwrite((char*)ptr + done * size, size, nmemb - done, (FILE*)stream);
    done += written;
    if (done < nmemb) {
        /* Not all has been written. Some kind of error may have occurred. */
        if (ferror((FILE*)stream)) {
            ...
        }
    }
}