C言語なら俺に聞け(入門編)Part 124
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/01/07(火) 21:12:49.42★前スレ
C言語なら俺に聞け(入門編)Part 123
http://toro.2ch.net/test/read.cgi/mmo/1384247471/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 166代目
http://toro.2ch.net/test/read.cgi/tech/1381909900/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています
0153デフォルトの名無しさん
2014/01/10(金) 19:23:37.41動作が速いってのがポイントだと思う
ゲームなんて大抵の言語で作れるけど、実行速度はどこかで頭打ちになる
頭打ちになってから実行速度の速い言語を学習しなおすのも面倒だし
だったら最初からCでやったほうがいい
アセンブラのほうが速いけどアセンブラは面倒くさすぎる
0154デフォルトの名無しさん
2014/01/10(金) 19:26:01.37釣りだろ、と思って100万回やってみたら意外に確率通りに分布してくれた
本当なのか?
0155デフォルトの名無しさん
2014/01/10(金) 19:38:10.06所持できるアイテムの上限を99個とするとき、アイテ
ムを入手するたびにリアロックでアイテムを記憶する
メモリを拡張していったほうがいいのでしょうか?
それとも最初のマロックで99個分確保してしまったほ
うがいいのでしょうか?
0156デフォルトの名無しさん
2014/01/10(金) 19:45:38.07getsをゲッツと読むような感覚
0157デフォルトの名無しさん
2014/01/10(金) 19:46:34.80C言語をからめようとしてるのがうざい
移動しろ
ゲームプログラムなら俺に聞け30
http://toro.2ch.net/test/read.cgi/tech/1388933972/
0158デフォルトの名無しさん
2014/01/10(金) 19:48:21.43ネイティブな外人さんもマロックって言うんだよな
0159デフォルトの名無しさん
2014/01/10(金) 19:48:45.07だからそこは放置されるって
0160デフォルトの名無しさん
2014/01/10(金) 19:50:05.03盛り上げればいいんじゃん
ジャパンエキスポに 寄生する朝鮮人じゃないんだから
0161デフォルトの名無しさん
2014/01/10(金) 19:53:30.29数個程度しか使われないのが普通なら毎回リアロックするし、
間とをって、例えば4の倍数個ずつマロックするとか、そんな感じ。
0162デフォルトの名無しさん
2014/01/10(金) 19:58:44.73だからスレチを見逃せってか
「人の嫌がることをすすんでやります」
の解釈が日本と異なる文化圏の人か
0163デフォルトの名無しさん
2014/01/10(金) 20:01:21.93そうなのか
じゃあゲッツも許されるよな
freopenはフリオープンと読んでいるしgetcはゲッチと読んでいる
charはキャラと呼ばずにチャーと読んでる
0164デフォルトの名無しさん
2014/01/10(金) 20:05:15.67まあこれは環境依存の関数だけど
0165デフォルトの名無しさん
2014/01/10(金) 20:09:15.86getc() → ゲック
ゲッチは環境依存というよりカーシスの関数だな
0166デフォルトの名無しさん
2014/01/10(金) 20:13:51.01そこまで言うならここでは言語仕様の話は今後一切するなよ。
「〇〇を実現するためのコード」は一切アウトってことでいいな。
0167デフォルトの名無しさん
2014/01/10(金) 20:14:18.260168デフォルトの名無しさん
2014/01/10(金) 20:16:03.75こっちはこっちでやるから気にしなくていいよ
0169デフォルトの名無しさん
2014/01/10(金) 20:17:51.65延々続けてただろ
どこのマヌケだ
0170デフォルトの名無しさん
2014/01/10(金) 20:20:39.55こういう曖昧な表現でしかモノを言えないのが自治のためだけに住み着いてる基地害w
0171デフォルトの名無しさん
2014/01/10(金) 20:23:19.230172デフォルトの名無しさん
2014/01/10(金) 20:23:27.69ゲックか
これからよう呼ばせてもらうかw
「あのーこのエフゲックなんですけど〜」とか社内で大声出したらどうなるかやってみるかw
Linuxでもあるねゲッチ
0173デフォルトの名無しさん
2014/01/10(金) 20:24:49.93fgetcは「フゲック」だ
fgri()なんて関数があったら「ふぐり」と呼べるんだが
線形合同法だね
0175デフォルトの名無しさん
2014/01/10(金) 20:28:21.09難しいですね・・・。
開発者である自分自身のテストプレイでは平均40個く
らいまでですが、普通の人がどのくらい持つか分から
ないですし・・・。
0176デフォルトの名無しさん
2014/01/10(金) 20:34:15.17そう言えばC++ではnewでrealloc()に相当するような関数はないが(Cのように使えばあるが)、
メモリブロックの調整で済むかコピーするかは実行時に判断出来ないので削ってしまったんだな
コンテナ使えば関係ないし
コピーコンストラクタと代入演算子の多重定義で相性が悪かったのかもしれんし
ってここはC++のスレではなかった
これこそスレ違い
0177デフォルトの名無しさん
2014/01/10(金) 20:34:15.48テンプレも前スレもいい加減
スレの一つも満足に立ててから言えよゴミが
0178デフォルトの名無しさん
2014/01/10(金) 20:34:50.90だから●持ってるんだけど知っての通り今はスレ立てに使えないだろうが
どれだけ不便してるか
0179デフォルトの名無しさん
2014/01/10(金) 20:37:52.82まあ謙虚な荒らしなんていないがwww
0180デフォルトの名無しさん
2014/01/10(金) 20:41:09.86気に入らないってだけで荒らし認定する糖質と同じくらい偉そうだよなwww
0181デフォルトの名無しさん
2014/01/10(金) 20:43:29.20Cならさらっと書いてやるからどんな状況か詳しく
0182デフォルトの名無しさん
2014/01/10(金) 20:46:14.82確かにCだと面倒だな
0183デフォルトの名無しさん
2014/01/10(金) 20:50:49.360184デフォルトの名無しさん
2014/01/10(金) 21:03:12.45ゲットキャラ
ゲットシー
0185デフォルトの名無しさん
2014/01/10(金) 21:04:42.22int main()
{
while(1){ printf("好きだ。愛してる。"); }
return 0;
}
0186デフォルトの名無しさん
2014/01/10(金) 21:07:05.91IOCCCで、おしゃれなラブレターを見た記憶がある
0187デフォルトの名無しさん
2014/01/10(金) 21:10:37.89C++ なら コンストラクタで glBegin デストラクタで glEnd ってやるクラス用意しといて
そのオブジェクトを作れば glBegin 〜 glEnd の入れ子の保障が文法の力で楽できるでしょ
(new 〜 delete は考えないw)
Cでそういう楽できるしくみって無理じゃない? 書く人の注意力に任すしか方法がないという感じなんだけど
0188187
2014/01/10(金) 21:18:45.54glBegin() が { に相当
glEnd() が } に相当
インデントするなりして間違いなく開いたら閉じろ ってね
0189デフォルトの名無しさん
2014/01/10(金) 21:19:18.70どこのサンプルみても同じスコープ内でBeginとEndを対にしてるわけだが
0190デフォルトの名無しさん
2014/01/10(金) 21:20:34.45んとね 自分で書いてるときに glEnd を書き漏らした場合にわからない
それを書き漏らさないように工夫できないか? そういう話
0191デフォルトの名無しさん
2014/01/10(金) 21:32:31.98コンストラクタ、デストラクタに分けて書く方が、
begin,endの対を何処に書いたかわからなくなるだろ
fopen,fcloseの対も、glBegin,glEndも、
可能な限り同じスコープに書くもんじゃねーの?
0192デフォルトの名無しさん
2014/01/10(金) 21:44:43.57同じスコープだよ
Begin
数行
(End ここで閉じ忘れ)
Begin
数行
End
Begin
数行
End
Begin
数行
End
うまく描画できてなくて 閉じ忘れを見つけるのに苦労したもんでね。。。
0193デフォルトの名無しさん
2014/01/10(金) 21:45:23.49FFにケット・シーとかいうのがいたような記憶が
関係ないけど
0194デフォルトの名無しさん
2014/01/10(金) 21:46:06.550195デフォルトの名無しさん
2014/01/10(金) 21:55:20.700196デフォルトの名無しさん
2014/01/10(金) 21:57:05.66myBegin()とmyEnd()とmyAllEnd()作って、
myBegin()ではglBegin()すると同時にカウンタを増やす。
myEnd()ではglEnd()すると同時にカウンタを増やす。
最後にmyAllEnd()を必ず1回呼び出すが、ここではカウンタの残り値の数だけglEnd()を呼び出す。
美しい、なんて美しい仕組みなんだ。
例えmyAllEnd()を2回呼んでもバグにならない至高の仕組み。
0197デフォルトの名無しさん
2014/01/10(金) 22:05:15.86違うだろ
>>192のトラブルを解決するにはBeginのラッパー作ってBeginラッパー内ではまずbeginフラグをチェックして、trueならまずEndしてからBeginしてbeginフラグを立てればよい
EndラッパーではEndすると同時にbeginにfalseをセットすればよい
0198デフォルトの名無しさん
2014/01/10(金) 22:05:28.800199デフォルトの名無しさん
2014/01/10(金) 22:07:39.80循環しなければね、循環参照ならそうはいかないが、そのときはどうする?
0200デフォルトの名無しさん
2014/01/10(金) 22:08:47.20ネストができないbegin〜endとか誰得?
0201デフォルトの名無しさん
2014/01/10(金) 22:09:36.720202デフォルトの名無しさん
2014/01/10(金) 22:19:39.860203デフォルトの名無しさん
2014/01/10(金) 22:21:40.56/ だの x: ならフルパス
0204デフォルトの名無しさん
2014/01/10(金) 22:24:26.190205デフォルトの名無しさん
2014/01/10(金) 22:26:51.760206デフォルトの名無しさん
2014/01/10(金) 23:07:31.720207デフォルトの名無しさん
2014/01/10(金) 23:16:38.00メモリ上のデータが一部消える不可解なバグに3時間悩まされた
死ねよ
0208デフォルトの名無しさん
2014/01/10(金) 23:21:24.360209デフォルトの名無しさん
2014/01/10(金) 23:23:09.91GetFullPathName
0210デフォルトの名無しさん
2014/01/10(金) 23:23:35.48それくらい知ってるわ
0211デフォルトの名無しさん
2014/01/10(金) 23:56:38.770212デフォルトの名無しさん
2014/01/11(土) 00:40:50.47自前でデバッグ用アロケータを作るがよい
0213201
2014/01/11(土) 00:45:48.88>>203さんのを参考に
filename[1]==':'のときにフルパスだと判定することで目的が達成できました
これでマップとモンスターのデータが管理しやすくなります
0214デフォルトの名無しさん
2014/01/11(土) 00:49:05.660215デフォルトの名無しさん
2014/01/11(土) 00:55:18.880216デフォルトの名無しさん
2014/01/11(土) 00:56:57.31恋愛サーキュレーション
0217デフォルトの名無しさん
2014/01/11(土) 01:00:55.010218デフォルトの名無しさん
2014/01/11(土) 01:07:10.17DirectXしか使ったことないんだけど、DirectXのBegin〜Endはネストしないぞ
OpenGLはネストするの?
0219デフォルトの名無しさん
2014/01/11(土) 01:40:01.05学会によっては禁止されてるほどアレな関数だぞ。
0220デフォルトの名無しさん
2014/01/11(土) 01:43:50.750221デフォルトの名無しさん
2014/01/11(土) 01:44:33.670222デフォルトの名無しさん
2014/01/11(土) 02:15:25.81馬鹿はどうしようもないな。
用途によって禁止されるところがあるのはおかしなことではない。
むしろ標準化されることの重要性や
用途によって要求される乱数性の度合いを度外視して
「俺のすげーライブラリ」を進めてくる奴は迷惑千万
0223デフォルトの名無しさん
2014/01/11(土) 05:10:30.25ミリ秒を割った」余りにでもするkっか?
0224デフォルトの名無しさん
2014/01/11(土) 08:03:47.010225デフォルトの名無しさん
2014/01/11(土) 08:21:23.58>>203は嘘つきなので信じないで下さい
0226デフォルトの名無しさん
2014/01/11(土) 09:15:39.56ttp://news.mynavi.jp/news/2014/01/09/091/
0227デフォルトの名無しさん
2014/01/11(土) 10:55:07.29boostにあるmtなんとか推奨されてたな
0228デフォルトの名無しさん
2014/01/11(土) 11:09:54.87いつまですれ違いを続けてるんだ
0229デフォルトの名無しさん
2014/01/11(土) 11:18:28.72能力的に無理だからそれ以上考えるな
いい加減すれ違いやめれ
0230デフォルトの名無しさん
2014/01/11(土) 11:34:06.440231デフォルトの名無しさん
2014/01/11(土) 11:37:46.67ctrl+zで終了したいのですがctrl+z入力すると改行されて入力待ち、もう一回入れると終了します。
文字列に突っ込んでるからまずいのでしょうか?
どうなってる%
0232デフォルトの名無しさん
2014/01/11(土) 11:40:46.13最大最小を求めるやつです
ctrl+zで終了したいのですがctrl+z入力すると改行されて入力待ち、もう一回入れると終了してくれます。
文字列に突っ込んでるからまずいのでしょうか?
どうなってるのか教えてください
void pr7(void)
{ int f=0;double max=0,min=0,c=1;char d="1";
char* a=&d;
char* enda;
printf("数字入れて:");
rewind(stdin);
while(scanf("%s",a)!=EOF)
{ c=strtod(a,&enda);
if (f==0){max=c;min=c;f++;}
else if (c>=max) {max=c;printf("max");}
else if(c<=min){min=c;}
printf("%.2f",c);
printf("\n数字入れて:");
rewind(stdin);}
printf("max=%.2f,min=%.2f\n",max,min);
}
0233デフォルトの名無しさん
2014/01/11(土) 12:09:33.050234デフォルトの名無しさん
2014/01/11(土) 15:03:28.44都道府県名とかの漢字を表示せるやり方教えてくださいな
ぐぐってもビットがちがうとかいまいちよくわからんかった
ちなみにウインドウズ
0235デフォルトの名無しさん
2014/01/11(土) 15:05:12.890236デフォルトの名無しさん
2014/01/11(土) 15:09:38.110237デフォルトの名無しさん
2014/01/11(土) 15:11:05.830238デフォルトの名無しさん
2014/01/11(土) 15:12:14.89漢字のところが記号とかになったりして困ってる
うーん伝わるかな?
0239デフォルトの名無しさん
2014/01/11(土) 15:13:54.340240デフォルトの名無しさん
2014/01/11(土) 15:16:03.81char使ってやるのはあってますか?
0241デフォルトの名無しさん
2014/01/11(土) 15:19:43.37カーソルが画面の一番下にきて、さらに下を押すとアイテム画面がスクロールするじゃん?
あれってどうやんの?
0242デフォルトの名無しさん
2014/01/11(土) 15:22:11.65カーソルの位置は変えずにアイテムの表示だけを変える。
0243234
2014/01/11(土) 15:30:19.23解決、ありがとう
0244デフォルトの名無しさん
2014/01/11(土) 15:54:25.52やってみたけどアイテムと表示がずれるようになった
アイテム一覧はスクロールするけど
どれ選んでもスクロール前の一番下にあったアイテムになる
0245デフォルトの名無しさん
2014/01/11(土) 16:05:30.630246デフォルトの名無しさん
2014/01/11(土) 16:12:05.86if (cnt==0)break;
って書く?
俺はカウンタの数値そのものをミスってマイナスになってたら怖いから
どうしても
if (cnt<=0)break;
って書いてしまうんだが
0247デフォルトの名無しさん
2014/01/11(土) 16:14:25.910249デフォルトの名無しさん
2014/01/11(土) 16:39:34.040250デフォルトの名無しさん
2014/01/11(土) 17:51:48.00IStorageインターフェースを使うとファイル内ファイルシステムみたいに
読み込めるんじゃなかったっけ?
OLEは言語非依存だからC言語からでも普通に操作できるよ
と言うより、プリミティブな操作は大抵C言語で解説されてる
0251デフォルトの名無しさん
2014/01/11(土) 17:52:48.71サンクス
ではお前らにもう一つ質問だ
不定回数(不定であって無限ではない)のループ処理でwhileを使う場合、無限ループ対策はしてる?
例えば理論上最大でも1000回でbreakするwhileループの場合、
何かの加減で無限ループになったら怖いから1ループごとに本来の処理目的とは関係ない変数cntをインクリメントして、
それが理論上の最大回数を超えた場合でもbreakするようにしたりしてる
cnt=0;
while(1){
//本来の処理
//本来の処理、何らかの条件でbreak
//本来の処理
//本来の処理
cnt++;
if (cnt>=1000)break;
}
本来の処理でメモリ操作ミスってcntがやられたとき(cntが永遠に1000を越えないようなバグ)の対策もしといたほうがいいかな
0252デフォルトの名無しさん
2014/01/11(土) 18:10:16.00while (1) {
if (cnt == 1000) {
break;
// 処理1
// 処理2
// …
}
}
ifの位置が違って気持ち悪い
普通ならこう書くけど
ループってのは、最初に条件分岐するってわかってる??
■ このスレッドは過去ログ倉庫に格納されています