2017-11-10 15 views
-4

'w'モードでfwriteによって書き込まれた内容のファイルがあります。fread from charバッファー

もう一度freadを使って読み戻すことができますが、ファイル全体をstd :: string/charバッファに読み込んでからfreadする方法があるのだろうかと思います。

私はこのファイルが実際にはリモートに格納されていることを認めます。ファイルをディスクにフェッチし、待ち時間の問題から解放したくありません。

+1

CまたはC++?一つを選んでください。彼らは実際には全く同じではありません。 – tadman

+1

なぜ 'char *'から 'fread'したいのですか?' strcpy'や 'memcpy'を使いたくないのですか? –

+2

何ですか?すでに配列や文字列にコンテンツがある場合は、そのコンテンツにアクセスできますか?どのようにこの奇妙なアイデアに来たのか分かりませんが、[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)でお読みください。 –

答えて

0

文字列を読み込んでからfreadをサポートすることはサポートされていません。そのため、標準のライブラリコードでポータブルではないハッキングが必要になります。

それを文字列に読み込んでからistream::readをサポートすることは完全にサポートされているので、それは簡単です。個人的には、私はおそらく全体の操作のためにiostreamsを使用するでしょう。 system()scp機能を使用してファイルを取り出す方法について

// Open remote for reading: 
std::ifstream remote_file("filename"); 

std::stringstream buffer; 

// get the data from the remote file into the stringstream: 
buffer << remote_file.rdbuf(); 

// read some data from the stringstream: 
char input_buffer[256]; 
buffer.read(input_buffer, sizeof(input_buffer)); 
0

:リモートファイルが本当に巨大である場合を除き、私はおそらくこのような何かをしたいですか?

#include <iostream> 
#include <cstdlib> 
#include <cstring> 

int main() 
{ 
    char command[90]; 

    strcpy(command, "scp [email protected]:remote/path/to/file.txt local/path/to/newFile.txt"); 
    system(command); 

    // Then read as you normally would using fread 

    return 0; 
} 

ここには、system()機能を使用したいくつかの例があります。

sshコマンドの男性がいます。