- 1 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:45:25 ]
- C言語の入門者向け解説スレです。
・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 9 pc11.2ch.net/test/read.cgi/tech/1173284217/ 過去スレ Part 1 pc8.2ch.net/test/read.cgi/tech/1146700389/ Part 2 pc8.2ch.net/test/read.cgi/tech/1153818463/ Part 3 pc8.2ch.net/test/read.cgi/tech/1160682950/ Part 4 pc8.2ch.net/test/read.cgi/tech/1162999861/ Part 5 pc8.2ch.net/test/read.cgi/tech/1165022193/ Part 6 pc10.2ch.net/test/read.cgi/tech/1167325490/ Part 7 pc10.2ch.net/test/read.cgi/tech/1170064980/ Part 8 pc11.2ch.net/test/read.cgi/tech/1171946674/ 関連スレ C/C++の宿題を片付けます 84代目 pc11.2ch.net/test/read.cgi/tech/1172981618/ くだすれC言語(初心者用) Part.2 pc11.2ch.net/test/read.cgi/tech/1172099763/ 【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131 pc11.2ch.net/test/read.cgi/tech/1170338926/ 【初心者歓迎】C/C++室 Ver.35【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1171888583/ 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
- 669 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:18:43 ]
- 参考書とかネットの記事とか見てるとmain()内の最後で、
return 0; return (0); って2種類の書き方見るんだけどこれらに明確な違いってあるのか? 低レベルな質問ですまん ><
- 670 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:24:11 ]
- >>669
括弧いらない あっても結果は変わらない
- 671 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:25:28 ]
- 違いはない。ただし括弧を付けない書き方が一般的。
昔はreturnに括弧を付けなければならなかった。 現在、括弧は不要になったが、あっても式の一部として扱われるのでコンパイルは通る。
- 672 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:26:01 ]
- >>670
レスありがとう。やたら気になってたんだ
- 673 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:28:21 ]
- >>669
returnは関数じゃなくてステートメントだから付けないてよい。 付けてもエラーにはならないが a = b + c を a = (b) + (c) などと書くのと同じことで冗長。 お作法的な話で言えば、綴りを間違って retrn 0 と書けば即コンパイルエラーだが、 retrn(0) と書いてしまうとそういう関数があるものと仮定されリンク時までエラーが発覚しない。
- 674 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 23:29:06 ]
- >>671
いつの話だ。
- 675 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 01:48:13 ]
- sizeof expr はつけなくてよいと分かっていても括弧つけてしまうな…
- 676 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 02:36:33 ]
- これは確かに使い分けに迷う。
sizeof(型); sizeof 変数;
- 677 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 02:42:05 ]
- 演算子もいってみりゃ関数みたいなもんじゃん
ってことで()付けてるけどいいのか?
- 678 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 03:55:13 ]
- >>676
変数ではなく式
- 679 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 04:01:44 ]
- >>677
別に構いませんよ。 ++(*(&(i)));
- 680 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 05:33:50 ]
- 激しくうっとうしいわw
- 681 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 06:05:28 ]
- 式だったら尚更()つけないとね
- 682 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 10:55:06 ]
- sizeof は、長い行の中に入ることもあって () なしだと見づらくなる場合があるからな
でもsizeof() じゃなくて、sizeof () にしてるな。 >>671 return に括弧が必要なときってあったか?
- 683 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 13:59:08 ]
- mem = malloc(len * sizeof * mem);
- 684 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 15:55:00 ]
- arrayという2次元配列にintの数値が入っています
for(i=0;i<array[0][j];i++)という風for文の条件式にしようとしても出来ませんでした こういう場合はどうすればいいのですか
- 685 名前:640 [2007/04/10(火) 16:10:53 ]
- やはりちゃんと動いてくれません(´Д`;)
>>650さんの意味がよくわからないのですが >>if((fin=fopen(argv[1],"r"))==NULL) の所のargv[]を1ではなくて他 の数値を渡せということでしょうか??
- 686 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 16:15:25 ]
- ちゃんと動かないって…もうちょっと他人にわかるように説明しろよ。
* どういう方法で起動していて、 * どういう挙動をして欲しいのか、 * そして実際はどういう結果になっているのか
- 687 名前:362 mailto:sage [2007/04/10(火) 16:38:24 ]
- >>363
型を見てみたらsignedcharでした。 この型しかソケット通信では送れないのでしょうか? >>364 ぐぐってもデータの転送順がかわることしかわかんなかったです>< 多くのデータを一度にsendで送るいい方法はないのですか><
- 688 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 17:06:16 ]
- bcpadから直接起動してるから引数渡せてないと予想
- 689 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 18:53:39 ]
- 趣味で麻雀をやってるんだけど、自分の打ち方がどれぐらい強いのか試そうと思ってC++のコンパイラさえあればあとは言語が書ければ代打ちソフトが作れるってdllを見たんでCをしてみようと思うんですけど。
これを読めばとりあえず素人はなんとかなるとか、このコンパイラが素人向けでわかりやすいなどありましたら教えてください。 一応Delphiは触るだけ触ったことはあるので言語そのものにアレルギー反応なんかは起こしませんけど、実用的なソフトを作ったことがないのでアルゴリズムなどちんぷんかんぷんです。
- 690 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 19:00:07 ]
- にh
- 691 名前::: [2007/04/10(火) 19:00:55 ]
- C言語習ったばかりなんですが、システムを組んでみたいと思ってます。
システムを組むための参考書や問題集は売ってますかね?自分で一から システムを作るのはやはり難しいですか?
- 692 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 19:01:30 ]
- システムの定義を教えてくれ
- 693 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 19:03:29 ]
- >>690
わかりにくかったなら省きますけど要は、素人におすすめできるコンパイラ(いつまでも使えるのならなおいいけどわかりやすさ優先。)と素人向けの参考書を教えてくださいってことです。 OKですか? 眠いのでちょっと日本語がおかしかったのは見逃してください。
- 694 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 19:41:38 ]
- >>693
おまいは、>>690を見て >にほんg(ry って分かったのかよw だったらなぜ、そもそも改行が出来ないんだ WindowsならBCCでおk
- 695 名前:687 mailto:sage [2007/04/10(火) 19:58:19 ]
- キャストしてもデータが途中までしか送れません><
どうすればいいんですか
- 696 名前:デフォルトの名無しさん [2007/04/10(火) 23:22:31 ]
- C言語で、char型の配列を確保する時に
領域を指定しないで宣言する方法ってありますか? char *s[]; ←のように宣言してもsのサイズが不明、もしくはゼロとか出て うまくいかないんですが、何かいい方法ありますか? 因みにこの問題ではmallocを使わないでやるという事が前提になってます。
- 697 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:24:37 ]
- callocもしくはreallocを使えばいい
- 698 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:28:27 ]
- >>695
じゃあ二回に分けて送れば
- 699 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:35:21 ]
- 質問です
AまたはBならCをする if( A || B ) { C ; } という条件文をA、Bわけて記述した時に、 if( A ) { C ; } else { if( B ) { C ; } } こう記述できると思いますが、Cを1回だけ使うような記述の方法はあるでしょうか?
- 700 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:39:14 ]
- 最近、こんなトンチみたいな問題だす学校、多いのかね?
- 701 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:41:08 ]
- >>689
それはつまり1人用の麻雀ゲームを作ろうというわけですね それなら簡単なGUIと思考ルーチンが必要です 思考ルーチンは現在の状況, つまり引いた牌と持ち牌(っていうのか?もれは麻雀やらないから言い方違うかも) と相手の打った牌などから次にどの牌を打つかを決める一連の思考の手順のことです これは一般的に一種類あるいは数種類の思考パターンを用意し, これらのような決まった処理のことを アルゴリズムと言う アルゴリズム(思考手順)そのものは言語に依存しないので(もちろん言語によって書き方は異なるかもしれないけど) すでに知っている言語があったら新たにCとかC++を勉強しなくてもOK 思考手順そのものを研究するのが目的ならVBやJavaなどの簡単にGUIが作れる言語が(個人的には)おすすめ これを足がかりにほかのゲームや実用ソフトを作りたいなら将来にわたって使っていけるような言語を選ぶのもあり(CとかC++) もしLinuxなどのUNIX系OSや, プラットフォーム非依存をターゲットとするならJavaが一番手っ取り早い GTKやwxWidgetなどのクロスプラットフォームのツールキットを使うこともできる (こういったツールキットは大抵複数の言語に対応している) あるいはPythonなどのスクリプト言語を使ってみるのもあり でも, ひとこと言わせてもらうと > 自分の打ち方がどれぐらい強いのか試そうと思って の意図はいまいちよくわからないが 作ったプログラムと自分で対戦すると言うなら それは一人二役でゲームをするのと同じだからちょっと無意味っぽいと(個人的に)思う また自分の思考をプログラミングしてほかの人やプログラムと戦わせたいのなら相当の覚悟が必要 人の思考は想像以上に複雑で, 無意識や勘なども作用してくるから 完全に自分の思考回路をプログラミングすることは(現実には)不可能に近い したがって出来上がったプログラムは君自身より弱い また, 何手か先を読むような(ありふれた)機能を盛り込む場合でも 計算しなければいけない手数は爆発的に増えるから(計算量とメモリーの増加), それをいかにして押さえるかとか いろいろとテクニックも必要になってくる ここまで考えるとかなり手間がかかる もれは大学の卒論がチェスのゲーム理論だったからよくわかる
- 702 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:44:16 ]
- >>699
do { if( !A ) { if( !B ) { break ; } } C ; }while(0);
- 703 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:48:24 ]
- >>699
なぜそうするのかはわからんが 単純にフラグをつけるのもいいんじゃない? Aが真ならflag = TRUE;してBのところでflag == TRUE;ならCを実行しないとか?
- 704 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:49:25 ]
- >>699
if( A ) { C ; } else if( B ) { C ; } これじゃダメなのか?
- 705 名前:704 mailto:sage [2007/04/10(火) 23:52:50 ]
- >>699
あー1回だけの記述か
- 706 名前:デフォルトの名無しさん mailto:sage [2007/04/10(火) 23:54:18 ]
- >>699
if(A) { goto l; } else if(B) { l: C; }
- 707 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:01:42 ]
- >>699
if(A) goto label1; if(B) goto label1; goto label2; label1: C; label2: ;
- 708 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:18:16 ]
- >>699人気だなww
- 709 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:30:03 ]
- で、本当にこれ宿題なのか?
だとしたらこんな腐った問題を出す教師ってどんなやつなんだ。
- 710 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:35:24 ]
- Q.腐った問題を出す教師自体が腐ってる確率を求めるプログラムを作りなさい
- 711 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 00:40:44 ]
- >>710
int main() { printf("腐った問題を出す教師自体が腐ってる確率=%d%%",100); return 0; }
- 712 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 01:01:48 ]
- >>701
えっとですね、あんまり必要ないかと思って省いてしまったんですけど。 東風荘っていうネット雀荘みたいなものがあるんですけど、そのゲームの画面の状況から変数を作るdllを見つけてですね。 上がりや聴牌の判断もそのdllの関数がやってくれるので私はその変数の扱いを設定するだけで麻雀の代うちソフトが作れるようになるわけなんです。 だから、相手は人だし麻雀というゲームを遊ぶための土台の部分は配布されているので単純にアルゴリズムを考えるだけでOKってことなんですよね。 テクニックとしては、プログラムのテクニックよりは麻雀のテクニックのほうが重要だとおもうので簡単という言葉を使わせてもらってます。
- 713 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 03:44:18 ]
- そんな面白そうなものがあるのか。
ちょっと探してこよう……と思ったら一発で見つかった。
- 714 名前:701 mailto:sage [2007/04/11(水) 05:22:28 ]
- >>712
ほほー便利だなー それなら自分がどんな風に思考しているのかと どうやってそれをアルゴリズムにするのかを悩むだけでいいのかw
- 715 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 07:56:24 ]
- if (A) {
if (B) { C; } }
- 716 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:00:29 ]
- >>715
っ A==1 B==0
- 717 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:07:36 ]
- >>715
おちつけ それは、A||Bは(又は)ではなくてA&&B(喝)だ
- 718 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:07:36 ]
- 実際こういう場合はどうしたらいいの?
素直に判別式に論理演算使えってこと?
- 719 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:17:18 ]
- switch (x) {
case A: case B: C; }
- 720 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:22:28 ]
- 逆に論理演算を使いたくない理由ってのがわからない
- 721 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:22:53 ]
- というかその為に論理演算子があるんだから使ってやれよ…
論理演算子が泣いてるぞ。
- 722 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:23:43 ]
- >>719
なんじゃそりゃーーー!(松田優作風に
- 723 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 08:23:56 ]
- AまたはBならCをする。
=> AでないかつBでないならCはしない。 というド・モルガンの法則を理解するための課題であった。 なわけはないか。
- 724 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:22:50 ]
- >>719
caseは定数しかとらないので A, Bのような式はだめ
- 725 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:23:38 ]
- >>699
void f(void){ C; } int main(void){ if(A){ f(); }else if(B){ f(); } }
- 726 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:28:07 ]
- #define SHE C
void main(void){ if(A){ SHE; }else if(B){ SHE; } }
- 727 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:29:03 ]
- ↑訂正
×void main(void){ ○int main(void){
- 728 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:52:06 ]
- >>723
setjmp&longjmp関数の有用性を教えるための課題
- 729 名前:デフォルトの名無しさん [2007/04/11(水) 10:08:09 ]
- invalid digit "8" in octal constant
invalid digit "9" in octal constant このコンパイルエラーって何ですか?教えてください!
- 730 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 10:15:07 ]
- >>729
8進数なんだから0〜7までで表せよ、 8や9なんてねーよバーカ っていうエラー。整数の頭に0をつけてるだろ。
- 731 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 10:15:55 ]
- >>729
#include<stdio.h> int main(void){ printf("%d\n", 012); /* 数値の頭に 0 が付くと 8進数 */ printf("%d\n", 12); return 0; }
- 732 名前:729 [2007/04/11(水) 10:22:40 ]
- >730さん
>731さん ありがとうございます! 参考になりました。
- 733 名前:695 mailto:sage [2007/04/11(水) 10:35:06 ]
- 整数やら文字列が入った構造体を、ひとつの文字列にするいい方法はないですか?><
- 734 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 10:44:08 ]
- >>733
関数を作る
- 735 名前:733 mailto:sage [2007/04/11(水) 10:48:45 ]
- 整数やら文字列が入った構造体を、ひとつの文字列にする関数を作りたいのですが、いい方法はないですか?><
- 736 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 10:51:23 ]
- >>735
構造体晒せ
- 737 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 10:52:16 ]
- いつまでこのアホタレを甘やかす気ですか?><
- 738 名前:735 mailto:sage [2007/04/11(水) 11:02:14 ]
- struct test {
int i; char c[10]; struct kouzoutai { int seisuu; double kazu; int suu; char moji[10]; }kou; };
- 739 名前:デフォルトの名無しさん [2007/04/11(水) 11:04:39 ]
- >>738
釣り乙 死ね
- 740 名前:735 mailto:sage [2007/04/11(水) 11:04:41 ]
- 全部snprintfとかstrcatで繋ぐのはめんどくさいです
要するにバイト列と文字列を相互変換できる方法が知りたいのです><
- 741 名前:735 mailto:sage [2007/04/11(水) 11:05:18 ]
- 自己解決しました><
- 742 名前:753 mailto:sage [2007/04/11(水) 11:06:53 ]
- 爆釣ありがとうございました><
- 743 名前:740 mailto:sage [2007/04/11(水) 11:07:14 ]
- >>741
してないです>< とりあえず16進数でずらずらと数字を並べてみることにするです><
- 744 名前:743 mailto:sage [2007/04/11(水) 11:08:48 ]
- できました><
- 745 名前:743 mailto:sage [2007/04/11(水) 11:21:14 ]
- >>744
まだやってません>< ところで、 sprintf(text, "ABC"); と sscanf("ABC", "%s", text); って strcpy(text, "ABC"); と同じですか?
- 746 名前:743 mailto:sage [2007/04/11(水) 11:39:57 ]
- 隣の後輩が教えてくれました><
ありがとうございました><
- 747 名前:745 mailto:sage [2007/04/11(水) 11:44:37 ]
- >>746
>< なんとか自分でやってみます。ありがとうございませんでした><
- 748 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 12:20:11 ]
- カオスすぎです><
- 749 名前:747 mailto:sage [2007/04/11(水) 12:26:13 ]
- 初心者なのですいません><
- 750 名前:749 mailto:sage [2007/04/11(水) 14:57:11 ]
- 構造体へのポインタをunsigned char*型にキャストして
1バイトずつ2桁の16進数に直したら 構造体と文字列の相互変換ができました>< unsigned char *p; unsigned char text[1024], buf[1024]; strcmp(text, ""); p = (char *)&test1.kou; for(i=0; i<sizeof(test1.kou); i++) { sprintf(buf, "%02x", (unsigned char)p[i]); strncat(text, buf, 2); }
- 751 名前:749 mailto:sage [2007/04/11(水) 14:59:26 ]
- p = (char *)&test2.kou;
for(i=0; i<sizeof(test2.kou); i++) { strncpy(buf, &text[i*2], 2); sscanf(buf, "%02x", &((unsigned char)p[i])); }
- 752 名前:749 [2007/04/11(水) 15:00:31 ]
- 以上オナニーでしたありがとうございました><
- 753 名前:749 mailto:sage [2007/04/11(水) 15:01:26 ]
- また初心者を装った釣りに来ますのでよろしくです><
- 754 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 15:02:25 ]
- もうこなくていいよ
- 755 名前:751 mailto:sage [2007/04/11(水) 15:04:22 ]
- >>752-754
ほんとに初心者なのにひどいです><
- 756 名前:735 mailto:sage [2007/04/11(水) 15:06:39 ]
- すみませんなんか偽物がレスして話進んでるんですけど><
>>738から全部偽物です><
- 757 名前:755 mailto:sage [2007/04/11(水) 15:09:48 ]
- なら>>756も偽者ですね><
- 758 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 17:04:36 ]
- >>735
1バイトづつ16進2桁の文字列にしてしまうとか、あるいはコントロールコード などの表示不能な文字はエスケープして表示可能な文字にして、表示可能な 文字はそのままにするとか、あるいは表示する必要が全くないのなら気にせず 全部 write() や fwrite() で出力してしまうとか、方法は色々あります。
- 759 名前:757 mailto:sage [2007/04/11(水) 17:43:19 ]
- >>758
>表示不能な文字をエスケープして表示可能な文字にして 文字列←→構造体で相互に変換したいので、文字列から戻す時に もともと表示可能な文字だったのかエスケープして表示可能になった文字なのか 分からなくなってしまうと思うのでこの場合は使えないです><すいません ソケットプログラムでsendするときunsigned char型を使うので、 構造体を文字列にしたかったのですが後は何とか自分でがんばってみるです><
- 760 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 18:01:36 ]
- バイナリを可視なASCII列にするにゃ Base64 エンコが手っ取り早いような気がしないでもない
が、構造体の中身をそのまんまエンコして送るのも抵抗があるな。 受け側のアライメントとエンディアン、基本型のサイズの全てが一致してないといけないしね。
- 761 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 18:01:41 ]
- >>759
エンコードした文字列は当然、デコードできる。 例えば不可読文字に遭遇したら%に引き続く二文字を16進の文字コードになるようエンコードする。 デコードするときは当然、その逆をやればいい。注意すべきは、%に遭遇した場合もエンコードしておく必要があることだけだ。 Ex. source: SOH "abc%" LF "def" ETX 20(4バイト整数) EOT encoded: %01abc%25%0adef%03%00%00%00%14%04
- 762 名前:759 mailto:sage [2007/04/11(水) 18:06:10 ]
- >>760-761
ありがとうございます><すごく勉強になります %をつける方法だと文字列の長さが一定にならないから送受信のとき大変そうですけど なんとか考えてやってみます
- 763 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 18:11:31 ]
- >>762
ソケットの送受信は長さ決め打ちして読むと泣きを見るわけだが… プロトコルを自前で規定してるか? # fgets 等を使わずに fread と fwrite で同じことを記述できるようにしてから、 # ソケットへ移行したほうが良いと思うぞ。
- 764 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 18:12:28 ]
- バイナリ値主体なら>760、テキスト主体なら>761だな。
#どちらも定番だね。
- 765 名前:762 mailto:sage [2007/04/11(水) 18:43:32 ]
- つい最近ソケットプログラムとかを勉強し始めたばかりなのでわからないことばかりで…。
とりあえずBase64というのをやってみることにします><;すいませんでした。
- 766 名前:765 mailto:sage [2007/04/11(水) 18:58:09 ]
- 今は文字列と数値を全部snprintfでそのまま繋げてやっていますが
構造体内の変数名とかを全部書かないといけないので ソースが汚いうえ無駄が多いです><
- 767 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 18:59:58 ]
- どういう風にやっているのかは知らないが、
そうやって単なる文字列にするのも一般的だと思うぞ。
- 768 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 19:03:30 ]
- 構造体のシリアライズは一大テーマで、
ここで扱うには余白が狭すぎるとは思うんだよなあw
- 769 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 20:11:51 ]
- >>713-714
亀ですけど、もし興味わいたなら最強の麻雀のアルゴリズム作ろうぜスレで一緒に最強のアルゴリズムつくりませんか?
|

|