
C言語について教えて欲しいです。
ファイルの中身をコピーするプログラムを作ってます
aというファイルには11111が入ってるとします。
while(fread(&c,1,1,fpin)==1)
{
fwrite(&c1,1,fpout)
}
解答はこうなってましたが、
freadの返り値は読み込んだデータの個数なので、ここでは1個なのでaのファイルの1個目の1しかコピーできなくないですか?
私は以下のようにしてました。
fread(&c,1,5,fpin);
fwrite(&c1,5,fpout);
No.6ベストアンサー
- 回答日時:
C言語 fread 使い方
■書式
「ファイルオープン時はファイルポインタはファイルの先頭にありますが、
読み込むとそのバイト数分だけファイルポインタが後ろにずれます。
この仕組みにより順番にファイルを読み込んでいくことが可能になっているわけです。」
https://bituse.info/c_func/44
C言語 fwrite 使い方
No.7
- 回答日時:
>1バイトしか読み込まないなら、永遠に最初の文字を読み込むと思ったのですが...
間違いです
>この関数は一つ目の1バイトを読み込んだら勝手に次の1バイトを読み込む仕様ということでしょうか?
そうですよ。あってます。
No.3
- 回答日時:
一回のfread&fwriteでは1バイトずつですが、それをwhileでファイルの終わりになるまで繰り返すので、ファイル全体を読み書きします。
返り値は0か1しかあり得ませんが、「返り値が0」であれば「ファイルが終わり」ということです(厳密には読み取りエラーの可能性もあるが)。
fread(&c,1,5,fpin);
と書いても、返り値は0か5だけでなく1~4という可能性も考慮する必要があります。
1バイトしか読み込まないなら、永遠に最初の文字を読み込むと思ったのですが...
この関数は一つ目の1バイトを読み込んだら勝手に次の1バイトを読み込む仕様ということでしょうか?
No.1
- 回答日時:
>fread(&c,1,5,fpin); fwrite(&c1,5,fpout);
・6バイト以上のファイルを正しくコピーできない。
・変数cの型がただのcharならメモリ破壊を起こす。
――恐れがあるコードかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
xcopyでのバッチコピー方法でコ...
-
frxファイルの役目
-
同じファイル名 上書きしないフ...
-
エクセルのハイパーリンクがコ...
-
Vba初心者です。下記のコード助...
-
バッチファイル XCOPYで上書き...
-
vbsでファイルやフォルダのコピ...
-
UNCパスでファイルをコピーしたい
-
SDカードのコピーと再生の仕方...
-
開いている別のファイルにExcel...
-
Delphiによるファイルのコピー
-
VB6でのファイルコピーの終了検...
-
mp3のコピー制限
-
Excelのマクロについて教えてく...
-
ラズパイからパソコンにファイ...
-
現在のブックを閉じないで、マ...
-
SDカードにファイルをコピーで...
-
差分ファイルのみコピーするには?
-
ブログの写真について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のコメントのサ...
-
同じファイル名 上書きしないフ...
-
ファイルサーバ上のファイルが...
-
frxファイルの役目
-
バッチファイル XCOPYで上書き...
-
[エクセル]コピーするとオブジ...
-
Vba初心者です。下記のコード助...
-
エクセルのハイパーリンクがコ...
-
バッチファイル 別ファイルにリ...
-
エクセル2010、図が大きすぎま...
-
現在のブックを閉じないで、マ...
-
vbsでExcelのシートをコピーす...
-
xcopyでのバッチコピー方法でコ...
-
バッチファイルのコピーで
-
FTPとファイルコピーの違いにつ...
-
アクセス クエリを別のファイ...
-
パワポでスライドをコピーでき...
-
vbsでファイルやフォルダのコピ...
-
開いている別のファイルにExcel...
-
bat 同名ファイルコピー時にリ...
おすすめ情報