0

私はビジュアルC ++に取り組んでいます。私はC ++の初心者で、タイプの「Contents」変数があるという奇妙な状況にあります-

char FileContents[200000] ;

今、このような sizeof 演算子を使用してファイルのサイズを取得しました

int SizeOfFile =Sizeof(File);

そして今、このファイルのデータを配列インデックス200000を持つ「コンテンツ」にコピーする必要があります。

memcpy(FileContents,&File[0],SizeOfFile);

そして、「FileContents」の内容を任意の場所のファイルに出力します(私の希望に従って)。私が見つけたのは、ファイルの内容が正しく表示されていることですが、ファイルの内容が終了すると、「ÌÌÌÌÌÌÌÌÌÌ」のような奇妙なデータが表示されます。下記を参照してください-

</body>
    </html> //Here finshes the file and after that i have this kind of data as you see below
    ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ..and so on until file ends.

char FileContents[200000] ; のメモリ割り当てが原因であることはわかっています。「SizeOfFile」は非常に小さい値であり、そのサイズの後に奇妙な「ÌÌÌÌÌ」があり、それらを見たくないためです。私が欲しいのは、「FileContents」の内容だけを含むファイルです。そして、FileContents のメモリを動的に割り当てることができません。Sizeof(File) を使用して動的に取得している「SizeOfFile」と等しくなければならないためです。

これらの「ÌÌÌÌÌÌÌÌÌ」値を取り除くために、この状況で何をすべきか? 解決策はありますか?

4

3 に答える 3

1

'\0'すべてのデータを文字で埋める必要があります。

だからこれを使う:

char FileContents[200000] = {};
于 2013-08-14T11:20:34.560 に答える