詳しくはこちらトピックに返信するユーザー名:メールアドレス:件名:C言語において、左辺と右辺が異なるかどうかを比較する演算子を答えよ:答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。すみませんやはりよくわかりませんでした。返信後もいろいろ調べてみたのですが、よくわからずzlibは今回はあきらめます。最初の方で教えていただいた方法やファイルheaderを使って、何とかしようと思います。スレッドが長引くのはあまりよくないと思いますので教えていただいたことを元にここからは自分で頑張っていこうと思います。このスレッドで教えてくださった皆様ありがとうございました。2年前>コマンドライン上で動くようですが、デバッグしやすいように工夫されているとの事なので>使ってみてはどうでしょうか?すみませんやはりよくわかりませんでした。返信後もいろいろ調べてみたのですが、よくわからずzlibは今回はあきらめます。最初の方で教えていただいた方法やファイルheaderを使って、何とかしようと思います。分からなかったら又質問するかもしてませんが、スレッドが長引くのはあまりよくないと思いますので教えていただいたことを元にここからは自分で頑張っていこうと思います。このスレッドで教えてくださった皆様ありがとうございました。>コマンドライン上で動くようですが、デバッグしやすいように工夫されているとの事なので>使ってみてはどうでしょうか?すみませんやはりよくわかりませんでした。返信後もいろいろ調べてみたのですが、よくわからずzlibは今回はあきらめます。最初の方で教えていただいた方法やファイルheaderを使って、何とかしようと思います。分からなかったら又質問するかもしてませんが、スレッドが長引くのはあまりよくないと思いますので教えていただいたことを元にここからは自分で頑張っていこうと思います。このスレッドで教えてくださった皆様ありがとうございました。2年前http://free.pjc.co.jp/Zlib/indexold.htmlDLLバージョンのzlibの解凍・圧縮のソースを探していたのですが、なかなか見つからず結局上のページに辿り着きました。コマンドライン上で動くようですが、デバッグしやすいように工夫されているとの事なので使ってみてはどうでしょうか?http://free.pjc.co.jp/Zlib/indexold.htmlDLLバージョンのzlibの解凍・圧縮のソースを探していたのですが、なかなか見つからず結局上のページに辿り着きました。2年前いま改めてググっていろいろ調べていたのですがzlibをダウンロードして中の説明書通りにzlibvc.slnをビジュアルスタジオ2015で開き、ビルドしたところで行き詰りました。6つほどファイルができたのですがそのうちzlibstat.libやzlibwapi.dllと、元から入っていたzlib.hを何とかすればいいぐらいまでしか調べても分かりませんでした。Z_DEFAULT_COMPRESSION);が赤波になってしまい、ビルドすると179こエラーを吐かれます。このあたりからどのようにすればいいのかご教授下さい。いま改めてググっていろいろ調べていたのですがzlibをダウンロードして中の説明書通りにzlibvc.slnをビジュアルスタジオ2015で開き、ビルドしたところで行き詰りました。6つほどファイルができたのですがそのうちzlibstat.libやzlibwapi.dllと、元から入っていたzlib.hを何とかすればいいぐらいまでしか調べても分かりませんでした。Z_DEFAULT_COMPRESSION);が赤波になってしまい、ビルドすると179こエラーを吐かれます。このあたりからどのようにすればいいのかご教授下さい。データサイズは上の3つも含めてsizeofの返り値をそのまま書き出すので大丈夫でしょうか?一つのクラスや構造体に出来ないようなので、sizeofは使えないのではないでしょうか?また、一般的に本体のサイズにヘッダサイズは含めません。変数を保存する予定なので悩んでました。ziplibについてはなんとなくググったときに見つけたのですが使い方がよくわかりませんでした。なんとなくぐぐった時にも、今改めてググった時にも分からないのでしょうか?参考になるサイトやサンプルコードは沢山出てきますよ。データサイズは上の3つも含めてsizeofの返り値をそのまま書き出すので大丈夫でしょうか?一つのクラスや構造体に出来ないようなので、sizeofは使えないのではないでしょうか?また、一般的に本体のサイズにヘッダサイズは含めません。変数を保存する予定なので悩んでました。ziplibについてはなんとなくググったときに見つけたのですが使い方がよくわかりませんでした。なんとなくぐぐった時にも、今改めてググった時にも分からないのでしょうか?参考になるサイトやサンプルコードは沢山出てきますよ。2年前サンプルコードありがとうございます。^=すら理解できずに調べたら「ビット単位の排他OR代入演算子」と出てきてさらに?が増える始末。これはしばらく調べたらなんとなくわかりました。比較的簡単そうなので、とりあえず暗号化はこれとハッシュ値を組み合わせた数にでもします。サンプルコードありがとうございます。^=すら理解できずに調べたら「ビット単位の排他OR代入演算子」と出てきてさらに?が増える始末。これはしばらく調べたらなんとなくわかりました。比較的簡単そうなので、とりあえず暗号化はこれとハッシュ値を組み合わせた数にでもします。2年前>C++であれば、std::vectorを使うのがよさそうだと思います。サンプルコードありがとうございます。確かにC++のコンパイラなのですがC言語以上のことは全く分かりません。サンプルコードも何が起こっているのかわからないので応用するのは難しそうです。>C++であれば、std::vectorを使うのがよさそうだと思います。サンプルコードありがとうございます。確かにC++のコンパイラなのですがC言語以上のことは全く分かりません。サンプルコードも何が起こっているのかわからないので応用するのは難しそうです。2年前ご回答ありがとうございます。4バイトこのような暗黙のルール?は初めて知りました。今後データを保存する時には書き出すことにします。データサイズは上の3つも含めてsizeofの返り値をそのまま書き出すので大丈夫でしょうか?>暗号化は暗号化でちゃんとし、圧縮は圧縮でちゃんとしましょう。ziplibについてはなんとなくググったときに見つけたのですが使い方がよくわかりませんでした。変数を保存する予定なので悩んでました。クラスについてはよくわかったいないので調べてみます。ご回答ありがとうございます。4バイトこのような暗黙のルール?は初めて知りました。今後データを保存する時には書き出すことにします。データサイズは上の3つも含めてsizeofの返り値をそのまま書き出すので大丈夫でしょうか?>暗号化は暗号化でちゃんとし、圧縮は圧縮でちゃんとしましょう。ziplibについてはなんとなくググったときに見つけたのですが使い方がよくわかりませんでした。変数を保存する予定なので悩んでました。クラスについてはよくわかったいないので調べてみます。暗号化としては、xorが一番シンプルでかつ簡単だと思います。圧縮としては、ランレングス圧縮が一番シンプルでかつ簡単だと思います。特集記事の第3章に圧縮処理の技法が載っているので圧縮処理のヒントになると思いますが、大分古いので、ネット上の圧縮アルゴリズムも調べてみる事もおすすめします。サンプルコードを載せておきます。printf("ファイル%sがオープン出来ませんでした。printf("ファイルxorcrypt.binがオープン出来ませんでした。}}暗号化としては、xorが一番シンプルでかつ簡単だと思います。圧縮としては、ランレングス圧縮が一番シンプルでかつ簡単だと思います。特集記事の第3章に圧縮処理の技法が載っているので圧縮処理のヒントになると思いますが、大分古いので、ネット上の圧縮アルゴリズムも調べてみる事もおすすめします。サンプルコードを載せておきます。data;if(argc>1)//コマンドラインの引数が1より大きければ{fp=fopen(argv[1],"rb");//ファイルを読み込みでオープンするif(fp==NULL){printf("ファイル%sがオープン出来ませんでした。-1;}fpw=fopen("xorcrypt.bin","wb");//xorcrypt.binファイルに書き込む(固定だが工夫の余地あり)if(fpw==NULL){printf("ファイルxorcrypt.binがオープン出来ませんでした。データの量が変わったときなどに大変そうなので、もう少し効率のいい方法はないでしょうか?C++であれば、std::vectorを使うのがよさそうだと思います。id=3,19394,146609]データの量が変わったときなどに大変そうなので、もう少し効率のいい方法はないでしょうか?[/quote]C++であれば、std::vectorを使うのがよさそうだと思います。2年前セーブデータの先頭には王道のこの3つを入れるといいでしょう。4バイト識別子は何でもいいです。「nikoyon」という文字列でもいいです。このファイルがにこよんさんが作ったセーブデータだという宣言が書いてあるようにします。バージョン番号がないとゲームをリリースした後にセーブデータの仕様変更があったとき対応できなくなります。続くデータサイズがいくらあるのかをここに記載します。暗号化のついでに圧縮もしてみたいので暗号化は暗号化でちゃんとし、圧縮は圧縮でちゃんとしましょう。中途半端に~~がてらというのは良くないです。圧縮については自分で計算しなくてもライブラリを使うべきでしょう。世界でもっとも実績のあるzip圧縮がよいでしょう。様なものが30個ぐらいあるのですが一度に全て入出力したいなら、一つの構造体やクラスにつめてやればどうですか?セーブデータの先頭には王道のこの3つを入れるといいでしょう。4バイト識別子は何でもいいです。「nikoyon」という文字列でもいいです。このファイルがにこよんさんが作ったセーブデータだという宣言が書いてあるようにします。バージョン番号がないとゲームをリリースした後にセーブデータの仕様変更があったとき対応できなくなります。続くデータサイズがいくらあるのかをここに記載します。暗号化のついでに圧縮もしてみたいので暗号化は暗号化でちゃんとし、圧縮は圧縮でちゃんとしましょう。中途半端に~~がてらというのは良くないです。圧縮については自分で計算しなくてもライブラリを使うべきでしょう。世界でもっとも実績のあるzip圧縮がよいでしょう。tempファイルが消せない場合があったりいろいろ問題がありそうなのであまりいいとは思わないのですが。tempファイルが消せない場合があったりいろいろ問題がありそうなのであまりいいとは思わないのですが。2年前ゲームプログラミングの館や竜神録の館でいつもお世話になってます。上2つのサイトはほぼすべて読まさせていただきました。2;MD5は昔よくわからなくてあきらめていたのでまた調べてみようと思います。暗号化のついでに圧縮もしてみたいので最初の目的は変えないでおこうと思います。ゲームプログラミングの館や竜神録の館でいつもお世話になってます。上2つのサイトはほぼすべて読まさせていただきました。2;MD5は昔よくわからなくてあきらめていたのでまた調べてみようと思います。暗号化のついでに圧縮もしてみたいので最初の目的は変えないでおこうと思います。2年前データの改竄を発見できる仕組みをhttp://dixq.net/g/の3.12章から解説していますけどご覧になりましたか?多くの場合、ハッシュ値を付けたら暗号化は不要です。バイナリコードを読んでハッシュ値チェック部分をスキップしてしまうようなチーターまで対策したいならハッシュ値対策に暗号化まで組み合わせると安全性は上がるかと思います。MD5等のハッシュ値を付ければよいかと思います。ちなみに龍神録1も2もMD5によるハッシュ値が付けてあるのでセーブデータを1bitでも変更して保存すると「このデータは改竄されています!」のような表示がでるようになっています。データの改竄を発見できる仕組みをhttp://dixq.net/g/の3.12章から解説していますけどご覧になりましたか?多くの場合、ハッシュ値を付けたら暗号化は不要です。バイナリコードを読んでハッシュ値チェック部分をスキップしてしまうようなチーターまで対策したいならハッシュ値対策に暗号化まで組み合わせると安全性は上がるかと思います。MD5等のハッシュ値を付ければよいかと思います。ちなみに龍神録1も2もMD5によるハッシュ値が付けてあるのでセーブデータを1bitでも変更して保存すると「このデータは改竄されています!」のような表示がでるようになっています。速い返信ありがとうございます。>40バイト程度の小さいデータをわざわざ圧縮しても、現在一般的なディスクでは512バイト以上のブロック単位でファイルを格納するので、意味がほとんど感じられません。最初に書いたコードは一部省略しているのですが実際は500KB程度のファイルになります。容量的には意味はないというのは初めて知りました。zip圧縮するとこのファイルが3KBになるので暗号化のついでに自分で圧縮したいと考えた次第です。保存してるから)それと、暗号化もできれば自分でしたかったのです。文字を入れ替えるにしても、自分でもよくわかってない暗号化っていうのが嫌で...(すみません)C言語初心者でここからコードにするのが難しいのでもう少し具体的に教えていただけないでしょうか?memcpyで複数の構造体をwork[]内に入れる方法が分かりません。workが圧縮しできたとして、workをそのままfwriteでバイナリモードで書き込むのでしょうか?質問ばかりですみません。速い返信ありがとうございます。>40バイト程度の小さいデータをわざわざ圧縮しても、現在一般的なディスクでは512バイト以上のブロック単位でファイルを格納するので、意味がほとんど感じられません。最初に書いたコードは一部省略しているのですが実際は500KB程度のファイルになります。容量的には意味はないというのは初めて知りました。zip圧縮するとこのファイルが3KBになるので暗号化のついでに自分で圧縮したいと考えた次第です。保存してるから)それと、暗号化もできれば自分でしたかったのです。文字を入れ替えるにしても、自分でもよくわかってない暗号化っていうのが嫌で...(すみません)C言語初心者でここからコードにするのが難しいのでもう少し具体的に教えていただけないでしょうか?[s]memcpyで複数の構造体をwork[]内に入れる方法が分かりません。[/s]もしworkが圧縮しできたとして、workをそのままfwriteでバイナリモードで書き込むのでしょうか?質問ばかりですみません。複数の配列の場合は、例えば以下のようにするといいでしょう。ENEMY_MAX);複数の配列の場合は、例えば以下のようにするといいでしょう。バイナリになった文字列として返してくれる関数を使用して(あるのかどうかわかりませんが)char型などに一度格納し同じ文字列を短縮してからファイルに書き出すというものです。ググっても上の様な関数は出てこなかったのでどうすればいいのかもわからずここで質問させてもらいました。例として、memcpy関数を用いてchar型の配列に格納し、処理する方法が考えられます。「文字列」(NUL終端されたバイト列)にはならないので、自分で長さを管理する必要があり、strcpyなどの文字列を操作する関数は使えないことに注意してください。*/オフトピック40バイト程度の小さいデータをわざわざ圧縮しても、現在一般的なディスクでは512バイト以上のブロック単位でファイルを格納するので、意味がほとんど感じられません。複数のファイルをまとめたアーカイブなら効果は無くはないかもしれませんが、誤差でしょう。したがって、圧縮よりも、xor、DES、AESなどの暗号化を考える方がいいと思います。長さがわからないですが、enemy_editの情報も格納するのですね。id=3,19394,146603]バイナリになった文字列として返してくれる関数を使用して(あるのかどうかわかりませんが)char型などに一度格納し同じ文字列を短縮してからファイルに書き出すというものです。ググっても上の様な関数は出てこなかったのでどうすればいいのかもわからずここで質問させてもらいました。[/quote]例として、memcpy関数を用いてchar型の配列に格納し、処理する方法が考えられます。「文字列」(NUL終端されたバイト列)にはならないので、自分で長さを管理する必要があり、strcpyなどの文字列を操作する関数は使えないことに注意してください。*/[/code][offtopic][s]40バイト程度の小さいデータをわざわざ圧縮しても、現在一般的なディスクでは512バイト以上のブロック単位でファイルを格納するので、意味がほとんど感じられません。複数のファイルをまとめたアーカイブなら効果は無くはないかもしれませんが、誤差でしょう。したがって、圧縮よりも、xor、DES、AESなどの暗号化を考える方がいいと思います。長さがわからないですが、enemy_editの情報も格納するのですね。fp);fclose(fp);}データ改造&解析対策(暗号化)と、ファイル容量を減らす(圧縮)ことを目的として軽く圧縮をかけてから保存したいと考えています。どのようにすればいいのか教えてください。私が現在考えているのはfweite関数のファイルに出力するのではなくバイナリになった文字列として返してくれる関数を使用して(あるのかどうかわかりませんが)char型などに一度格納し同じ文字列を短縮してからファイルに書き出すというものです。ググっても上の様な関数は出てこなかったのでどうすればいいのかもわからずここで質問させてもらいました。RRRRRRABDDDDDGGという文字列があったとします。これに『ランレングス圧縮』という圧縮をかけると次のようなデータになります。fp);fclose(fp);}[/code]データ改造&解析対策(暗号化)と、ファイル容量を減らす(圧縮)ことを目的として軽く圧縮をかけてから保存したいと考えています。どのようにすればいいのか教えてください。私が現在考えているのはfweite関数のファイルに出力するのではなくバイナリになった文字列として返してくれる関数を使用して(あるのかどうかわかりませんが)char型などに一度格納し同じ文字列を短縮してからファイルに書き出すというものです。ググっても上の様な関数は出てこなかったのでどうすればいいのかもわからずここで質問させてもらいました。圧縮の方法は以下の様な方法を考えています[quote="DXライブラリ管理人"]RRRRRRABDDDDDGGという文字列があったとします。これに『ランレングス圧縮』という圧縮をかけると次のようなデータになります。ミクプラは自由にリンクできます。