C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part148
https://mevius.5ch.net/test/read.cgi/tech/1580471646/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
探検
C++相談室 part149
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/02/18(火) 06:19:41.54ID:xvjipUWj176デフォルトの名無しさん
2020/02/22(土) 11:27:04.70ID:M9bzP2wG 大きなスタックをとる方法かms以下を測る方法みつけないと測れない。
177デフォルトの名無しさん
2020/02/22(土) 11:32:12.14ID:M9bzP2wG C++の最適化は異常すぎる。
178デフォルトの名無しさん
2020/02/22(土) 11:37:21.93ID:FQZLMBs9 おまえが頭悪いのは十分わかったから、もう書き込むな
179デフォルトの名無しさん
2020/02/22(土) 11:37:23.90ID:M9bzP2wG ちなみにグローバル変数で一億個確保したら今度はClangがギブアップした。
1000万個ならClangでもいけた。
1000万個ならClangでもいけた。
180デフォルトの名無しさん
2020/02/22(土) 11:56:13.47ID:M9bzP2wG std::vectorは初期化子リストによる構築が出来るんだけど、そこでもオーバーフローしたような気がする。
でも、元ネタは別にスタックに入れなくてもどこかにあるはずなので、なぜそうなるのかよくわからなかった。
でも、元ネタは別にスタックに入れなくてもどこかにあるはずなので、なぜそうなるのかよくわからなかった。
181デフォルトの名無しさん
2020/02/22(土) 12:30:58.63ID:sQwxiot/ 特殊学級の子が乱入してきちゃってるやん・・・
182デフォルトの名無しさん
2020/02/22(土) 13:42:24.73ID:M9bzP2wG なんだと!
183デフォルトの名無しさん
2020/02/22(土) 15:42:46.89ID:M9bzP2wG スタック使えるのがC++の利点だよね。
184デフォルトの名無しさん
2020/02/22(土) 16:27:02.47ID:vUJdNmYs そもそもコードを書いた時点でされるであろう最適化を
まったく予想できていない
もうこの時点で脳味噌がコンパイラの知能より劣ってるのが確定
これすらわからんから延々と馬鹿な実験を続ける
まったく予想できていない
もうこの時点で脳味噌がコンパイラの知能より劣ってるのが確定
これすらわからんから延々と馬鹿な実験を続ける
185デフォルトの名無しさん
2020/02/22(土) 16:38:08.08ID:/f58S0oT バカな実験は勝手にやっててくれて構わないが、いちいちここに書き込むのはやめて欲しい。バカなことでも呟いていれば誰かが正しいことを教えてくれるだろうというスタイルなのだろうか?
186デフォルトの名無しさん
2020/02/22(土) 16:49:06.66ID:M9bzP2wG187デフォルトの名無しさん
2020/02/22(土) 17:30:17.04ID:M9bzP2wG 他に気付いたことは。
gotoはかなり使い道がある。
newは意外と速い。
std::vectorはコンテントによって最適化してくれるので基盤としてなかなか良い。
gotoはかなり使い道がある。
newは意外と速い。
std::vectorはコンテントによって最適化してくれるので基盤としてなかなか良い。
188デフォルトの名無しさん
2020/02/22(土) 17:33:20.63ID:M9bzP2wG メモリー分断化は全く問題にもならなかった。
そんなに心配ならOSもJavaで書くしかない。
そんなに心配ならOSもJavaで書くしかない。
189デフォルトの名無しさん
2020/02/22(土) 18:27:04.22ID:8Q4grnkR 構うから図に乗るんだよ
煽られてもガン無視しとけ
煽られてもガン無視しとけ
190はちみつ餃子 ◆8X2XSCHEME
2020/02/22(土) 18:30:13.87ID:5jIrjfcF >>186-187
マイクロベンチマークは特性を見極めるのに使うべきで、
その特性が用途に適合するかどうかという視点で見ないと意味ない。
当たり前だがあらゆる意味で最強ってことはそうそうあることではなくて、
良い部分もあれば悪い部分もある。
普段はかなり良質な機能でも、その悪い部分を使うような用途だったら
使い物にならないかもしれない。
「間違い」っていうのは目的にマッチしないってことなんだよ。
目的・用途が示されないベンチマークがダラダラ流れててもそこに間違いもクソもない。
指摘を期待するなら指摘できるような形に整理して欲しい。
C++ スレだから言語仕様に反することは (目的にかかわらず) 間違いと言うかもしれんけど、
言語仕様で未定義のことでもやむをえずやることは C++ ではあることだしな。
マイクロベンチマークは特性を見極めるのに使うべきで、
その特性が用途に適合するかどうかという視点で見ないと意味ない。
当たり前だがあらゆる意味で最強ってことはそうそうあることではなくて、
良い部分もあれば悪い部分もある。
普段はかなり良質な機能でも、その悪い部分を使うような用途だったら
使い物にならないかもしれない。
「間違い」っていうのは目的にマッチしないってことなんだよ。
目的・用途が示されないベンチマークがダラダラ流れててもそこに間違いもクソもない。
指摘を期待するなら指摘できるような形に整理して欲しい。
C++ スレだから言語仕様に反することは (目的にかかわらず) 間違いと言うかもしれんけど、
言語仕様で未定義のことでもやむをえずやることは C++ ではあることだしな。
191デフォルトの名無しさん
2020/02/22(土) 18:36:22.97ID:M9bzP2wG まずbenchmarkをとる方法がわかってないから。
192デフォルトの名無しさん
2020/02/22(土) 22:36:47.98ID:8zrZxrX6 ベンチマーク取ること自体が目的なのはプロセッサベンダーとパソコンオタクだけ
まず要件があって、それを満たすことの判定のために設計するのがベンチマークだ
まず要件があって、それを満たすことの判定のために設計するのがベンチマークだ
193デフォルトの名無しさん
2020/02/22(土) 23:06:34.77ID:M9bzP2wG だいたいの感覚がわかればいいんだけど。
194デフォルトの名無しさん
2020/02/23(日) 00:36:06.65ID:VTsgWMQb ベンチマークは比較のために行うものなのでは…
195デフォルトの名無しさん
2020/02/23(日) 03:50:37.25ID:e8YTPgwZ196デフォルトの名無しさん
2020/02/23(日) 06:59:13.39ID:pCDQSm7+197デフォルトの名無しさん
2020/02/23(日) 10:37:28.13ID:UFB+Qlam198デフォルトの名無しさん
2020/02/23(日) 14:00:58.11ID:5lcMrU2O でお前は何を相談したいわけ?
中身のない活動報告しないくていいから
中身のない活動報告しないくていいから
199デフォルトの名無しさん
2020/02/23(日) 14:18:49.75ID:UFB+Qlam200はちみつ餃子 ◆8X2XSCHEME
2020/02/23(日) 14:24:51.96ID:DiMPdgV2 Twitter とか Qiita とかで書いといて
201デフォルトの名無しさん
2020/02/23(日) 14:40:09.27ID:yDpSritD 車輪どころか分裂勘違い君を再生産するのがC+++じゃねえか
202デフォルトの名無しさん
2020/02/23(日) 17:05:04.58ID:UFB+Qlam だから悪かったって。
そんな怒らなくたっていいやん。
そんな怒らなくたっていいやん。
203デフォルトの名無しさん
2020/02/23(日) 17:08:42.45ID:UFB+Qlam しかも+一個多いし。
204デフォルトの名無しさん
2020/02/24(月) 01:13:48.48ID:1U5lho1x 質問ですが「〜の最大値」って英語で書くと「Maximum value of 〜」だと思うのですが、
<limits.h>のINT_MAXのようにMAXimumを後置にする書き方もそこそこ見かけます
〜MAXという名前と、
MAX〜という名前では英語圏の人的にはどっちが自然?
<limits.h>のINT_MAXのようにMAXimumを後置にする書き方もそこそこ見かけます
〜MAXという名前と、
MAX〜という名前では英語圏の人的にはどっちが自然?
205デフォルトの名無しさん
2020/02/24(月) 01:20:48.67ID:ZsrQSj47 〜MAXはINT_MAXみたいな不変の固定値
max〜はある配列の最大要素みたいなその場で求めた最大値の変数名に使いたくなる
日本人だからこれがネイティブな感覚かどうかは知らん
max〜はある配列の最大要素みたいなその場で求めた最大値の変数名に使いたくなる
日本人だからこれがネイティブな感覚かどうかは知らん
206デフォルトの名無しさん
2020/02/24(月) 09:25:34.25ID:T8+Aa3p6 std::numeric_limits<int>::max() も語順は int, max だね
207はちみつ餃子 ◆8X2XSCHEME
2020/02/24(月) 10:19:08.00ID:Bhg0SWzZ208デフォルトの名無しさん
2020/02/24(月) 10:26:25.85ID:T8+Aa3p6 int というカテゴリの中に max があるべきか
max というカテゴリの中に int があるほうが合理的か
どっちだと思う?
俺は後者は、あまりにも漠然とした概念のカテゴリ名で探す気が失せそうに思う
205が指摘しているように同じ英単語でもどういう意味で使っているのか解釈に幅がありすぎ
max というカテゴリの中に int があるほうが合理的か
どっちだと思う?
俺は後者は、あまりにも漠然とした概念のカテゴリ名で探す気が失せそうに思う
205が指摘しているように同じ英単語でもどういう意味で使っているのか解釈に幅がありすぎ
209デフォルトの名無しさん
2020/02/24(月) 11:45:35.94ID:FPuN7ayr 無理にクラスにせず関数にしろってのは
「無理な分類はするな」っていうC++の理念じゃないの
「無理な分類はするな」っていうC++の理念じゃないの
210デフォルトの名無しさん
2020/02/24(月) 12:00:57.87ID:T8+Aa3p6 ファンクタなんかその逆なんだが
211デフォルトの名無しさん
2020/02/24(月) 12:20:34.36ID:QkZvP/Ht ここまで「英語圏の人」からの回答ひとつもナシ
212デフォルトの名無しさん
2020/02/24(月) 12:33:29.35ID:T8+Aa3p6 そんなん5chに期待してるのか?
213デフォルトの名無しさん
2020/02/24(月) 12:50:58.82ID:uK6l/p4b >>211
西洋圏の人の場合、例えばハンガリアン記法では、人の人数は、numPerson、
CPersonへのポインタは、pPerson、Textが0終端文字列であることを表すためには、
pszTextとする。
これらは、number of persons, pointer to a person,
pointer to string with zero end for Text (???)
などに対応している。最後のはよく分からない。
ならば、maxPerson のようなつけ方もあってよいはず。しかし、
でも、PERSON_MAX というような命名法もある。
他の変数と並べたような時に、どちらが整理し易いかなどでそのプログラマが判断しているのだと思われる。
結論から言えば、オールマイティーな命名法は無い。
西洋圏の人の場合、例えばハンガリアン記法では、人の人数は、numPerson、
CPersonへのポインタは、pPerson、Textが0終端文字列であることを表すためには、
pszTextとする。
これらは、number of persons, pointer to a person,
pointer to string with zero end for Text (???)
などに対応している。最後のはよく分からない。
ならば、maxPerson のようなつけ方もあってよいはず。しかし、
でも、PERSON_MAX というような命名法もある。
他の変数と並べたような時に、どちらが整理し易いかなどでそのプログラマが判断しているのだと思われる。
結論から言えば、オールマイティーな命名法は無い。
214デフォルトの名無しさん
2020/02/24(月) 12:59:00.32ID:T8+Aa3p6 システムハンガリアンはハンガリー人が作ったんじゃないぞ
アメリカ人がtypeという英単語の意味を誤解して始めた今日では物笑いの種になってるやつだ
アメリカ人がtypeという英単語の意味を誤解して始めた今日では物笑いの種になってるやつだ
215デフォルトの名無しさん
2020/02/24(月) 13:01:10.57ID:T8+Aa3p6 英語圏にもアホはいるんだよ
マイクロ波とガンマ線が区別できなくてヌークだヌークだ言ってる田舎者のせいで
スマホ恐怖症になってる情弱が後を絶たない
マイクロ波とガンマ線が区別できなくてヌークだヌークだ言ってる田舎者のせいで
スマホ恐怖症になってる情弱が後を絶たない
216デフォルトの名無しさん
2020/02/24(月) 13:02:35.90ID:y8NirncW むしろ英語圏こそアホの割合が多い
217デフォルトの名無しさん
2020/02/24(月) 13:21:01.25ID:vxbZ0MKw 英語ができる=かしこい
と日本人は思いがちだ
日本では外国語はかしこくないと習得が難しいが話し相手の外国人は普通のやつが多い
知能指数が20くらいは違ってるはずだから会話内容は絶対かみ合っていない
でも話している日本人は交流できていると思って喜んでいる
日本人の言う知能と外国人の知能も多分かみ合っていないんだろう
と日本人は思いがちだ
日本では外国語はかしこくないと習得が難しいが話し相手の外国人は普通のやつが多い
知能指数が20くらいは違ってるはずだから会話内容は絶対かみ合っていない
でも話している日本人は交流できていると思って喜んでいる
日本人の言う知能と外国人の知能も多分かみ合っていないんだろう
218デフォルトの名無しさん
2020/02/24(月) 19:53:54.48ID:XuGp3j1T ここも話がまったくかみ合ってないしな
219デフォルトの名無しさん
2020/02/25(火) 15:34:57.13ID:djWltYEA >>63
少し話がずれるが、OOPには、「SOLID」原則なるものも有る。
少し話がずれるが、OOPには、「SOLID」原則なるものも有る。
220デフォルトの名無しさん
2020/02/25(火) 19:09:36.06ID:SJd9VeEz SOLIDとoopはそんなに関係はないけどな。
oopに神経使うくらいならSOLIDやTDDの理解に時間をかけた方が近道だわ。
oopに神経使うくらいならSOLIDやTDDの理解に時間をかけた方が近道だわ。
221デフォルトの名無しさん
2020/02/26(水) 11:19:43.59ID:L12u8R2Z std::mapの値を取得するときに、右辺値で取得するより.at使う方が例外処理がある分遅いですか?
222デフォルトの名無しさん
2020/02/26(水) 14:11:24.83ID:VEltjo/b そんなことも聞かないとわからない奴は安全な方使っとけ
223デフォルトの名無しさん
2020/02/26(水) 21:11:26.26ID:5tO15yqv 速さにこだわるのは中二病の証。
224デフォルトの名無しさん
2020/02/26(水) 21:14:58.60ID:tn+NOmwK 富豪的プログラミングは厨三病の証かw
客の表情を一切気にしないオナニー野郎
客の表情を一切気にしないオナニー野郎
225デフォルトの名無しさん
2020/02/26(水) 22:17:02.48ID:5tO15yqv 地デジになってザッピングが遅くなった。
226デフォルトの名無しさん
2020/02/26(水) 22:42:40.23ID:5tO15yqv 客の表情を気にすればこそ安全性・堅牢性が最重視される。速度は二の次。
227デフォルトの名無しさん
2020/02/26(水) 22:58:05.64ID:HHiZy6zP そんなもん要件次第
228デフォルトの名無しさん
2020/02/26(水) 23:07:12.19ID:5tO15yqv229デフォルトの名無しさん
2020/02/26(水) 23:13:57.21ID:wxEFNPzX 安全性と堅牢性を要件に必要としない案件って何だろう…
230デフォルトの名無しさん
2020/02/26(水) 23:55:17.99ID:LU1U8Jw/ >>228
とにかく時間を節約したいから速いソフトが欲しいってことは多々ある
正しく使う限り正しく動くなら問題ないのでそれ以上の安全性は不要
他者から攻撃されることはないから堅牢性も不要
そういう状況普通にある
身近な例ならお前だって使い捨てのスクリプトに過剰な引数チェックとかしないだろ?
とにかく時間を節約したいから速いソフトが欲しいってことは多々ある
正しく使う限り正しく動くなら問題ないのでそれ以上の安全性は不要
他者から攻撃されることはないから堅牢性も不要
そういう状況普通にある
身近な例ならお前だって使い捨てのスクリプトに過剰な引数チェックとかしないだろ?
231デフォルトの名無しさん
2020/02/26(水) 23:58:44.34ID:wxEFNPzX そんな使い捨てのもんを客に出すの?どういう案件?
232デフォルトの名無しさん
2020/02/27(木) 00:15:30.08ID:HQmHUU7r 「無能な働き者」を納品しちゃダメでしょ。
233デフォルトの名無しさん
2020/02/27(木) 00:28:55.91ID:iUBnhgkM234デフォルトの名無しさん
2020/02/27(木) 01:13:36.33ID:G3iz3let レコメンド関係は安全性なんかよりも効率重視だがな。
スマホゲーなんかもすぐ落ちるじゃん。
それでも遅くてカクカクするよりかは喜ばれるわけだ。
スマホゲーなんかもすぐ落ちるじゃん。
それでも遅くてカクカクするよりかは喜ばれるわけだ。
235デフォルトの名無しさん
2020/02/27(木) 01:40:09.31ID:01yj9LF4 お高いシミュレーションソフトなんてちょっと入力ファイルや引数間違えただけで落ちるけど
236デフォルトの名無しさん
2020/02/27(木) 02:32:36.12ID:HQmHUU7r おやおや?
例として挙げられるのは、スマホゲームとシミュレーションだけですか?
例として挙げられるのは、スマホゲームとシミュレーションだけですか?
237デフォルトの名無しさん
2020/02/27(木) 02:33:32.23ID:HQmHUU7r 趣味レーション(笑)
238デフォルトの名無しさん
2020/02/27(木) 07:13:57.74ID:MeoIkHme239デフォルトの名無しさん
2020/02/27(木) 07:16:26.27ID:MeoIkHme240デフォルトの名無しさん
2020/02/27(木) 07:58:08.43ID:76IAsN1p241デフォルトの名無しさん
2020/02/27(木) 08:56:58.29ID:gp31hmMe だから堅牢性よか速さが欲しい
数十億ポリゴン使うなら速さを優先しないとそのソフトは実用じゃない
描画されないとそのソフトが存在する価値がないからな
数十億ポリゴン使うなら速さを優先しないとそのソフトは実用じゃない
描画されないとそのソフトが存在する価値がないからな
242デフォルトの名無しさん
2020/02/27(木) 09:02:02.25ID:MeoIkHme 自分はソフト屋でございハードは全くわかりません
なやつが詰むケースだな
なやつが詰むケースだな
243デフォルトの名無しさん
2020/02/27(木) 09:53:05.86ID:G3iz3let 絶対安全で一日かかるプログラムよりも
3回に一回は落ちるが10分で終わるプログラムのが価値のある場面は多いよ。
まあ場面によるしトレードオフの話だからどっちでもいいのだが
意固地になるのは違うだろうという話。
3回に一回は落ちるが10分で終わるプログラムのが価値のある場面は多いよ。
まあ場面によるしトレードオフの話だからどっちでもいいのだが
意固地になるのは違うだろうという話。
244デフォルトの名無しさん
2020/02/27(木) 10:21:33.33ID:MeoIkHme 「落ちる」ことなく一見正常終了のように振る舞い誤った結果を出力するゴミプログラムの価値はゼロ
245デフォルトの名無しさん
2020/02/27(木) 15:59:17.88ID:HQmHUU7r コンパイラの最適化に期待するコードを書くよりも、処理するデータ量を減らす努力をしたほうがいい。
246デフォルトの名無しさん
2020/02/27(木) 16:13:34.90ID:MeoIkHme 「ほうがいい」 「よりまし」と言って下位に位置づけたものを不要という暴論
247デフォルトの名無しさん
2020/02/27(木) 18:10:34.05ID:DcMelsSn 3回に1回落ちるようなクソプログラムが配列末端や不正ポインタからゴミを読んで計算結果に混入させてないと誰が保証してくれるの?
そんなゴミクズを混入して一生懸命計算したゴミ結果に何の価値があるの?
何でもいいからそれっぽい数字が出てりゃいいの?だったら/dev/urandomから適当に数字吐くスクリプトで十分だな
お前のクソプログラムの価値はその程度だ
そんなゴミクズを混入して一生懸命計算したゴミ結果に何の価値があるの?
何でもいいからそれっぽい数字が出てりゃいいの?だったら/dev/urandomから適当に数字吐くスクリプトで十分だな
お前のクソプログラムの価値はその程度だ
248デフォルトの名無しさん
2020/02/27(木) 20:16:23.17ID:6N44UBOd249デフォルトの名無しさん
2020/02/27(木) 20:19:13.39ID:6N44UBOd >>247
> 3回に1回落ちるようなクソプログラムが配列末端や不正ポインタからゴミを読んで計算結果に混入させてないと誰が保証してくれるの?
絶対安全で一日かかるプログラムの出力も誰も保証してくれないけどねw
> 3回に1回落ちるようなクソプログラムが配列末端や不正ポインタからゴミを読んで計算結果に混入させてないと誰が保証してくれるの?
絶対安全で一日かかるプログラムの出力も誰も保証してくれないけどねw
250デフォルトの名無しさん
2020/02/27(木) 20:22:55.14ID:MeoIkHme 日本語でおk
251デフォルトの名無しさん
2020/02/27(木) 20:25:59.58ID:gTm/hLBR だいたい新バージョンってのは新機能だったり高速化だったりが売りになっている。
旧バージョンでも動いてたシミュレーションはベンダーでもユーザーでも同一の結果が出るか確認するからバグはあまり混入しない
ある程度ユーザー側で検証が済んでからユーザーは移行する。
新機能はパラメータがちょっと違うだけでバグったりするから安定するまで結構な頻度で更新版が出る。
旧バージョンでも動いてたシミュレーションはベンダーでもユーザーでも同一の結果が出るか確認するからバグはあまり混入しない
ある程度ユーザー側で検証が済んでからユーザーは移行する。
新機能はパラメータがちょっと違うだけでバグったりするから安定するまで結構な頻度で更新版が出る。
252デフォルトの名無しさん
2020/02/27(木) 20:28:40.63ID:gTm/hLBR 自分の利用する範囲で正常系入力にたいして妥当な結果さえ出ていれば、それ以外でどんなに酷いバグが混入していようがユーザーはあまり気にしない
ユーザーによってはバグフィックス版への移行に対しても慎重なところも良くある。
ユーザーによってはバグフィックス版への移行に対しても慎重なところも良くある。
253デフォルトの名無しさん
2020/02/27(木) 21:17:41.74ID:0ftqea78 そろそろC++の話に戻ろうか
254デフォルトの名無しさん
2020/02/27(木) 21:27:11.49ID:Y1qHWJOB わかった、C++の話にもどろう・・
まずはC++で堅牢なメモリリークのないポインタ管理をすべきか
それとも速度優先である程度のリスクを負うコードを書くほうがいいかについて
まずはC++で堅牢なメモリリークのないポインタ管理をすべきか
それとも速度優先である程度のリスクを負うコードを書くほうがいいかについて
255デフォルトの名無しさん
2020/02/27(木) 21:33:59.93ID:01yj9LF4 つか、速度必要なところではポインタに変換して演算するけど所有権管理はスマポでやるだろ
256デフォルトの名無しさん
2020/02/27(木) 22:46:18.56ID:MeoIkHme257デフォルトの名無しさん
2020/02/27(木) 23:33:30.63ID:G3iz3let258デフォルトの名無しさん
2020/02/27(木) 23:37:21.61ID:KVIeYgu/259デフォルトの名無しさん
2020/02/27(木) 23:56:49.44ID:09BJJqOH バカが極論語るというよりも
素人が空想語るって感じだけどいつもこのスレってw
素人が空想語るって感じだけどいつもこのスレってw
260デフォルトの名無しさん
2020/02/28(金) 00:35:10.61ID:ANl57hab ファイルのバイナリ読み込みをしています。
下記のように最初の2バイトが単位レコードのバイト数を表しているとき、
単位レコード全体を表示しようとしているのですが、うまくいきません。
どうすれば表示できますか?
00 08 FF FF FF FF FF FF
-----
|
+----------------- レコードのバイト数
typedef unsigned char BYTE;
// dataはすでにファイルからバイナリデータとして読み込んでいるもの
int rec_size = (data[0] << 8 | data[0+1]);
BYTE* temp;
temp = (unsigned char*)malloc(sizeof(BYTE)*rec_size+1); // 改行を含めたメモリ確保をしているつもり
memcpy(temp, 0, (size_t)sizeof(BYTE)*rec_size);
temp[sizeof(BYTE)*rec_size] = "0A"; // 改行コード挿入しているつもり
printf("AAAAA %s\n", *temp); //レコード単位を表示
exit(EXIT_FAILURE);
下記のように最初の2バイトが単位レコードのバイト数を表しているとき、
単位レコード全体を表示しようとしているのですが、うまくいきません。
どうすれば表示できますか?
00 08 FF FF FF FF FF FF
-----
|
+----------------- レコードのバイト数
typedef unsigned char BYTE;
// dataはすでにファイルからバイナリデータとして読み込んでいるもの
int rec_size = (data[0] << 8 | data[0+1]);
BYTE* temp;
temp = (unsigned char*)malloc(sizeof(BYTE)*rec_size+1); // 改行を含めたメモリ確保をしているつもり
memcpy(temp, 0, (size_t)sizeof(BYTE)*rec_size);
temp[sizeof(BYTE)*rec_size] = "0A"; // 改行コード挿入しているつもり
printf("AAAAA %s\n", *temp); //レコード単位を表示
exit(EXIT_FAILURE);
261デフォルトの名無しさん
2020/02/28(金) 00:42:03.60ID:bgqQewMR memcpy(temp, 0, (size_t)sizeof(BYTE)*rec_size);
262デフォルトの名無しさん
2020/02/28(金) 00:44:25.91ID:ANl57hab まずそもそもunsigned charは文字列ではないから%sではだめですね。
どうすれば16進数表示が出来ますか?
どうすれば16進数表示が出来ますか?
263デフォルトの名無しさん
2020/02/28(金) 00:45:57.88ID:bgqQewMR あるいはこれか
printf("AAAAA %s\n", *temp); //レコード単位を表示
printf("AAAAA %s\n", *temp); //レコード単位を表示
264デフォルトの名無しさん
2020/02/28(金) 00:47:19.38ID:bgqQewMR265デフォルトの名無しさん
2020/02/28(金) 00:52:57.99ID:YKTB7lSA あまりにぶっ壊れすぎて何がしたいのか分からん
レコードってのは長さの2byteを含む?
長さ以外は文字コードでそれを文字列として表示したい?
それともバイナリで16進表示したい?
レコードってのは長さの2byteを含む?
長さ以外は文字コードでそれを文字列として表示したい?
それともバイナリで16進表示したい?
266デフォルトの名無しさん
2020/02/28(金) 00:53:13.01ID:ANl57hab %xにしたらコンパイル通りました。が、出力結果は「0」になりました。。
typedef unsigned char BYTE;
// dataはすでにファイルからバイナリデータとして読み込んでいるもの
int rec_size = (data[0] << 8 | data[0+1]);
BYTE* temp;
temp = (unsigned char*)malloc(sizeof(BYTE)*rec_size);
memcpy(temp, 0, (size_t)sizeof(BYTE)*rec_size);
printf("AAAAA %x\n", *temp);
typedef unsigned char BYTE;
// dataはすでにファイルからバイナリデータとして読み込んでいるもの
int rec_size = (data[0] << 8 | data[0+1]);
BYTE* temp;
temp = (unsigned char*)malloc(sizeof(BYTE)*rec_size);
memcpy(temp, 0, (size_t)sizeof(BYTE)*rec_size);
printf("AAAAA %x\n", *temp);
267デフォルトの名無しさん
2020/02/28(金) 00:57:06.59ID:ANl57hab 下記バイナリデータがあったときに、頭の2バイトが8なので、8バイトをtempに格納し16進数で表示したいです。
連続したバイナリデータで今読み込んでいるレコード単位がどの部分を読み込んでいるのかを確認しようとしています。
data = 0x0008AABBCCDDEEFF
連続したバイナリデータで今読み込んでいるレコード単位がどの部分を読み込んでいるのかを確認しようとしています。
data = 0x0008AABBCCDDEEFF
268デフォルトの名無しさん
2020/02/28(金) 01:02:23.82ID:ANl57hab 実際のdataには下記のようにバイナリファイルの全データを読み込んでいるので、そのうちの一区切りのレコードを表示したいです。
data = 0x0008AABBCCDDEEFF0004AABB0005AABBCC
よく考えたらtempにmemcpyせずにdataから直接表示できればそれでもいい気がしてきました。
data = 0x0008AABBCCDDEEFF0004AABB0005AABBCC
よく考えたらtempにmemcpyせずにdataから直接表示できればそれでもいい気がしてきました。
269デフォルトの名無しさん
2020/02/28(金) 01:03:07.59ID:cn9U0Abk 貼ってるコードがデタラメすぎて意味不明だからとりあえずやりたそうなことをベタ書きするぞ
これで合ってるか?これをカッコよく書きたいって話?
for(int i=0; i<rec_size; ++i){
printf("%x\n", data[2+i]);
}
printf("\n");
これで合ってるか?これをカッコよく書きたいって話?
for(int i=0; i<rec_size; ++i){
printf("%x\n", data[2+i]);
}
printf("\n");
270デフォルトの名無しさん
2020/02/28(金) 01:10:04.09ID:ANl57hab271デフォルトの名無しさん
2020/02/28(金) 01:16:02.14ID:YKTB7lSA for(size_t i=0,l=0;i<全体の長さ;i+=l){
l=data[i]<<8 + data[i+1];
for(size_t j=0;j<l;++j) {
printf("%02.2X ",data[i+j]);
}
printf("¥n");
}
l=data[i]<<8 + data[i+1];
for(size_t j=0;j<l;++j) {
printf("%02.2X ",data[i+j]);
}
printf("¥n");
}
272デフォルトの名無しさん
2020/02/28(金) 01:21:12.05ID:YKTB7lSA l=... + ...
じゃなく... | ...
じゃなく... | ...
273デフォルトの名無しさん
2020/02/28(金) 01:25:11.44ID:ANl57hab ありがとうございます。
bit演算させて%02Xで表示させるんですね。
%02.2X は %02X になりますか?
bit演算させて%02Xで表示させるんですね。
%02.2X は %02X になりますか?
274デフォルトの名無しさん
2020/02/28(金) 01:28:52.77ID:YKTB7lSA .2はいらなかった
275デフォルトの名無しさん
2020/02/28(金) 01:31:26.71ID:ANl57hab うまく表示できました!
今勉強中で助かりました。
ありがとうございました。
今勉強中で助かりました。
ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- フランス「G7に習近平主席を呼びたい」ドイツ「良い考えだ」 高市さん...? [237216734]
- 麻生太郎氏、高市政権と距離を置きはじめる(´・ω・`) [399259198]
- 【悲報】中国営業に熱心な日本人タレントたち、中国のイベントが続々と中止に… まだ予定中のアイドルとか歌手とかたくさんいるけど [452836546]
- 自閉症が「んなっしょい」と連呼するお🏡
- 押井守の映画「天使のたまご」が4Kリマスターされて上映されるみたいなんだけどこれ面白いの? [268718286]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
