教えてください – プログラミング – Home

通知
すべてクリア

教えてください

固定ページ 1 / 2

MH
 MH
(@MH)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

はじめまして!
C++、VisualC++は初心者です。
今C++でバイナリデータをシフト変換するプログラムを作っています。
ファイルを読込んでその読込んだデータを右か左にNビットシフト変換しそれを新たな
データに保存するプログラムを作っています。

何もわからないので、細かく教えていただけたら幸いです。

これをMFCでも作成してみる予定です。

よろしくお願いします。


引用解決済
トピックタグ
駄犬
 駄犬
(@駄犬)
ゲスト
結合: 23年前
投稿: 59
 

こっちは捨てたのですか?
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200205/02050018.txt


返信引用
Joan
 Joan
(@Joan)
ゲスト
結合: 23年前
投稿: 42
 

まず、
・ビットシフト
・ファイルを開く
・ファイルを保存する
のプログラムが書けますか?C++の入門書レベルなので
参考書を読み直してみて十分解ける問題だと思います。

それでもまたわかれなければ、レスを分からない点を
書き込んでください。


返信引用
MH
 MH
(@MH)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

このようなプログラムでファイルを開いていますが、保存の時はどのようにすればいい
のですか??
fh1=_open(filename,O_RDONLY|O_BINARY)

いくつかやっていますがうまく保存ができません。


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 81
 

> いくつかやっていますがうまく保存ができません。

少しご自身で実施されている内容を整理して、ヘルプで _open の
内容をじっくり参照することをお勧めします。
「色々やったけど、なんだかうまくいきません」と言われても
欲しい回答は得られないでしょう。


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

> fh1=_open(filename,O_RDONLY|O_BINARY)
>
O_RDONLYの意味を調べれば、どうして保存(=書き込み)ができないのかがわかるような。


返信引用
MH
 MH
(@MH)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

読み込みは書いた文章でやりました。
書込みは
fh2 = _open(filename, O_CREAT | O_WRONLY | O_APPEND | S_IREAD | S_IWRITE );

で、やりましたがうまく結果が書き込まれません


返信引用
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

こっちは捨てたのですか?
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200205/02050018.txt


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 81
 

こっちは捨てたのですか?
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200205/02050018.txt


返信引用
MH
 MH
(@MH)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

両方同じ系列なんですか??両方見ています。

バイナリデータを読込んでシフト演算はうまくいったのですが、結果をファイルに保存
ができません。

私の作っているプログラムの一文です。
fh1=open(filename, O_RDWR | O_BINARY);
printf( \n);
fh2=open(filename, O_WRONLY | O_BINARY | O_APPEND | S_IREAD , S_IWRITE);
printf( \n);
if (fh1==-1)
.<省略>.
else
{
while (1)
{
rbyte = read(fh1,buf,65536);
printf(rbyte=%d\n,rbyte);
dump(rbyte,buf,c);
printf(\n);
if (nx==1)
{

dump1(rbyte,buf,c,fh2);void dump2 (int byte, unsigned char *buf,int c,int fh2)
.<省略>.
printf(%2x ,(*(buf+ad)>>(nn))|(num)); *この結果を保存したいです


返信引用
マルチトスポ
 マルチトスポ
(@マルチトスポ)
ゲスト
結合: 23年前
投稿: 1
 

まずはここを読むべきです。
http://rararahp.cool.ne.jp/cgi-bin/lng/lng.htm

しっかり読み行動に移すことでゾンビのような無気味な人たちから(失礼!冗談です)解
放されるでしょう。


返信引用
テン
 テン
(@テン)
ゲスト
結合: 23年前
投稿: 35
 

MHさん のソースをを見て気になったこと

その1。
>fh2=open(filename, O_WRONLY | O_BINARY | O_APPEND | S_IREAD , S_IWRITE);
fh2 が -1 のチェックは?、その他 _read, _writeのチェックは?

その2.
>fh2=open(filename, O_WRONLY | O_BINARY | O_APPEND | S_IREAD , S_IWRITE);
                    >。。。 | S_IREAD , S_IWRITE);
                    。。。 , _S_IREAD | _S_IWRITE);

その3。
>fh2=open(filename, O_WRONLY | O_BINARY | O_APPEND | S_IREAD , S_IWRITE);
第3パラメータを指定するときは、第2パラメータに _O_CREAT が必要...とヘルプにあ
ります。
fh2=_open(filename, _O_CREAT | _O_WRONLY | _O_BINARY | _O_APPEND , _S_IREAD |
_S_IWRITE);

その4.
>while (1)
>{
>rbyte = _read(fh1,buf,65536);
if (rbyte <= 0) break;

その5.
_write(fh2,buf,rbyte); が無い

その他。
たぶん記載ミスとおもいますが、open read 当関数の初めに _ が抜けている。


返信引用
テン
 テン
(@テン)
ゲスト
結合: 23年前
投稿: 35
 

もう一箇所見つけました。

>fh1=open(filename, O_RDWR | O_BINARY);
>printf( \n);
>fh2=open(filename, O_WRONLY | O_BINARY | O_APPEND | S_IREAD , S_IWRITE);

filename が同じということは?


返信引用
MH
 MH
(@MH)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

管理者の方へ
プログラムを記載してすいませんでした。
今後は気をつけます。
申し訳ありませんでした。


返信引用
MH
 MH
(@MH)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

シフト変換はうまくいきました。
しかし、結果をファイルに保存すると最後の方で同じ結果がでてしまいます。
どのようにすれば正常な結果を出力できるのでしゅうか??

バイナリで
00 00 00 00 00 12 24 52 A0・・・・・・・・・・・・・

と言う形で出力されますが、最後のファイルを読込んだ時バッファが少ないために
残りが前の出力として保存されてしまいます。

どのように直したらいいのですか??教えてください


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました