[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/17 15:29 / Filesize : 215 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 54



1 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 20:41:54 ]
C言語の*入門者*向け解説スレッドです。
初心者、初級者の方は他の質問スレのほうが良いかもしれません。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 130代目
pc12.2ch.net/test/read.cgi/tech/1250204272/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 53
pc12.2ch.net/test/read.cgi/tech/1253110182/

過去スレ
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

669 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:13:39 ]
それで良いじゃん。

670 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:14:37 ]
>>668
setTextがsettextになってる以外は別に間違ってないぞ

先頭に
#include <stdio.h>
void hoge();
void setText(int n , char *str);
int main(){ hoge(); return 0; }
を付ければ問題なく動く

671 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 20:32:14 ]
>>669-670
これでよかったんですね。
どうもありがとう。

672 名前:656 [2009/10/21(水) 22:15:16 ]
みなさま本当にありがとうございます……。
コンパイラが古いのですね。
Turbo-C 2.01というものをダウンロードしてみることにします。
本当にありがとうございました。

673 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:31:22 ]
せっかくMicrosoftがVisualStudioを無料で配布してるのに、なんで初心者は使わないんだ?
BCCとかLSI-Cよりよっぽど使いやすいのに。
どうしてもコマンドラインがいいっていうんならLinux入れてgcc使うべき。

674 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 22:33:58 ]
mingwでいいよ.古いけど

675 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 23:55:53 ]
Cマシンとかいう奴を使え。

676 名前:デフォルトの名無しさん [2009/10/22(木) 00:02:31 ]
つーマシン作れよ

677 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:03:34 ]
VisualStudioはごちゃごちゃしてるからだよ
分厚い、単なる取扱説明書みたいなものが本屋に溢れてる



678 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:12:01 ]
VCはC++標準への準拠度は低いし
Cライブラリがグローバル名前空間を汚染してるし
勉強には向いてないよ。

679 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:12:33 ]
つーか、学習段階なら日本語周りは後回しにしたほうが良いんじゃね。
とりあえず ASCII 文字だけで一通りやってみたら?


680 名前:デフォルトの名無しさん [2009/10/22(木) 00:14:55 ]
C言語の学習にはBCC+cpadが理想的

681 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 00:19:08 ]
お手軽ではあるが、理想的ではない

682 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 01:15:22 ]
関数の引数に構造体を渡す場合に値を書き換えない場合は値渡しにするのが一般的ですか。ポインタ渡しの方がデータのコピー量が少ないのでどっちがいいのか悩みます。

683 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 01:22:26 ]
ポインタ渡ししましょう。

684 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 01:34:44 ]
好きな方にすれば良いよ。

685 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 01:43:45 ]
>682
foo_t foo(const struct foo *foo);
最後のfooは、foo()の名前(シンボルへのポインタ)を関数のスコープで別の型のシンボルfooで上書きしているから、barの方がいいか。
まぁ、なんだ、const修飾しとけと言いたかったんだ。

686 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 02:59:51 ]
>>685
つまりなんだ、関数名と構造体名と変数名は同時におなじものを使えるが、いまいちよくないということか

687 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 03:14:28 ]
構造体のタグは名前空間が違うからどうでもいいよ



688 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 03:20:18 ]
>687
そんなことはわかっているんだよ
関数名と変数が同じ名前だから、再帰呼び出しや関数ポインタが使えないと言っているわけで。

689 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 03:22:01 ]
>>688
おまえへのレスじゃねえよアホが

690 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 03:25:10 ]
粘着するつもりは無いが、
>688の変数というと語弊があるので、s/変数/仮引数/としておく。
まぁ、そうはいっても関数スコープのちょっと上で宣言された変数なんだけどね。
スタックですね、わかります。

691 名前:686 mailto:sage [2009/10/22(木) 03:29:00 ]
>>687
なるほど。ありがとう
ちなみにtypedefしちゃうとだめだよね?

>>688
あぁー、そういう弊害が出てくるんですね。為になります。

692 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 04:39:15 ]
func(&kouzoutai);
const付けたとしてもこの関数呼び出しの後でkouzoutaiのメンバが書き換わるのかどうかわからないすよね。
func(kouzoutai);
だったら書き換わらないことがわかるけど。
キャストすればいいのかな。。


693 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 06:26:12 ]
funcのシグネチャによるだろ

694 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 10:31:59 ]
>const付けたとしてもこの関数呼び出しの後でkouzoutaiのメンバが書き換わるのかどうかわからないすよね。
「呼び出しの後」が呼び出した関数内の話なら自己責任だろ。
「呼び出しの後」が呼び出した先の呼ばれた関数内の話ならその関数の宣言でconstポインタなら書き換わらないだろ。

695 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 10:48:08 ]
あえてconstをはがさない限りは変えられないんじゃないの?

696 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:13:14 ]
func()
{
  Kouzoutai kouzoutai;

  kouzoutai.member = 100; //func()では書き換えたい
  func2(&kouzoutai); //func2()では書き換えたくない。関数呼び出しからそれを明記できないか。
}

697 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:18:59 ]
>>696
void func2(const Kouzoutai * parameter);
func2()自体が書き換え可能なのだとしたら、呼び出すこと自体が無茶。



698 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:23:49 ]
func()
{
  Kouzoutai kouzoutai;
const Kouzoutai *kouzoutai_constptr = &kouzoutai;

  kouzoutai.member = 100;
  func2(kouzoutai_constptr);
}

699 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 12:38:38 ]
C++でも
func(const T &in, const T &in2, T *out) //定義
func(in, in2, &out) //呼び出し
みたいにして、呼び出しの記述を見て関数内で変更されうることが類推しやすくしたりするね

そういう意味では
func2((const Kouzoutai *)&kouzoutai)
でいいのかも知れんが、全部それやらないと本末転倒

700 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:11:12 ]
値渡しでいいだろ。速度も落ちねえよ。

701 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 13:38:47 ]
なんでそんな無茶を言い出すの

702 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 15:14:48 ]
無茶ではない。
値渡しこそ正義。

703 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 17:42:25 ]
参照渡しがいいの!

704 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 17:54:44 ]
値渡しだろ

705 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 18:01:02 ]
間を取って、コピーしたもののアドレスを渡す、でどうか

706 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 18:08:33 ]
とるなし

707 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 21:47:21 ]
fuck()



708 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 21:52:38 ]
>>698
なるほど。天才ですね。

709 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 22:09:02 ]
よく言われる

710 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 01:34:00 ]
いつも神様って呼ばれてる。天才と言われることは滅多にない

711 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 10:56:55 ]
いつも旧神って呼ばれてる。ノーデンスと言われることは滅多にない

712 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:15:02 ]
神様にもいろいろいるしね
貧乏神や疫病神でないことを祈る

713 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:30:38 ]
死神だろ。

714 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 10:26:40 ]
func()
{
  Kouzoutai kouzoutai;

  kouzoutai.member = 100; //func()では書き換えたい
  func2(&kouzoutai); //func2()では書き換えたくない。関数呼び出しからそれを明記できないか。
  kouzoutai.member = 100; //func()では書き換えたいんだってば
}


715 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 10:40:45 ]
 func2(kouzoutai); //func2()で書き換えても平気。値渡しだから。call by valueだから。

716 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:21:32 ]
return fuck(you);

717 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:36:03 ]
メイン関数でポインタを宣言し、関数Aに引数でポインタを渡し動的にメモリを確保するとともにデータをセット
次に関数Bでそのデータを処理、みたいな事をしたいのですがうまくいきません。
どうも関数Aで確保したメモリがmainに戻ってくると解放されているようす・・・なにか方法はないですか?

void main(void)
{
  char *p;

  関数A(p);
  関数B(p);
}

void 関数A(char *p)
{
//ここで*pに動的メモリを割り当て&データセット
}

void 関数B(char *p)
{
//*pのデータを処理
}




718 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:39:29 ]
動的にメモリを割り当てられてないんでしょ。

719 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:41:22 ]
>>717
void 関数A(char **p)

じゃないと p@main が書き換わらないよ

720 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:45:57 ]
そしてmain内では
関数A(&p);
にする

普通の変数を関数内で書き換えるときと同じ。

721 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 16:05:42 ]
こうしろ。

void main(void)
{
  char *p;

  p = 関数A();
  関数B(p);
}

char *関数A(void)
{
//ここで動的メモリを割り当て&データセット
}

void 関数B(char *p)
{
//*pのデータを処理
}


722 名前:717 mailto:sage [2009/10/24(土) 16:14:34 ]
ありがと書き換えてみるわ

723 名前:toya mailto:age [2009/10/24(土) 17:01:57 ]
>>503
よろしくおねがいいたします。

724 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:28:44 ]
>>723
インデントを説明するための例なので、内容については説明しません
int foo(){return 0;}
int bar(){return 0;}
int main(){int a,b;for(a=0;a!=5;a++){b=((b+a)*b+a)/a;foo();bar();}return 0;}

せめてバグがない物を提示しないか

725 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:29:59 ]
上のプログラムはコンパイラに掛けると、エラーはなく実行できるコードを返してくれます。

と続いてるわけだし。

726 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 18:07:45 ]
>723
多くの人によって編集されていくと、スタイルがバラバラになる可能性があるので、
最低限は決めておいた方がいいと思う。
また、説明などに使う用語やどの規格に準拠して書くかなども。

これ以上はスレチなので、新しくスレを立ててからお願いします。

727 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 04:03:48 ]
free() や fclose() に NULL を渡したらどうなりますか?



728 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 04:18:37 ]
どうもならない。

729 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 04:30:29 ]
>>727
fclose に NULL を渡すのはダメ

730 名前:デフォルトの名無しさん [2009/10/25(日) 14:55:59 ]
「車輪の再発明はするな」という言葉で車輪の再実装を阻む行為は、
「車輪を実装した」という経験をもたせないようにして、先行者利益を確保するという、孔明の罠なのです。

731 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:05:44 ]
車輪の調子が悪い時にメンテナンスできないしな

732 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:40:14 ]
実装の仕方がまちがっているのに得意げな車輪の再実装は
止めてやるべき

733 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:44:35 ]
自作の暗号アルゴリズムほど恐ろしいものはない

734 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:47:33 ]
実験を一人でやれない奴は発明するな

735 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:52:50 ]
日本に航空機製造をさせない某国のような

736 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:17:07 ]
再発明と再開発・再生産とは違う。
発明するのが無駄ってことだろ。


737 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:19:56 ]
孔明の罠??




738 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:45:53 ]
やらない言い訳に使うなってことでもあるな。
ありもしないライブラリを再発明になるといけないので探してます、とかな。

739 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:24:10 ]
>>737
巧妙なトリック

740 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:39:11 ]
光明の罠

741 名前:デフォルトの名無しさん [2009/10/25(日) 18:13:11 ]
あなたに自分の好きなことをする自由な時間を取り戻す20の方法
gigazine.net/index.php?/news/comments/20080802_find_free_time/

10.「それは受けられません」と言うことを学びなさい
12.最も大きなタスクを一番最初に処理しなさい
13.人に任せる
14.気を散らすあらゆるものを視界から取り除きなさい
15.インターネットから切断する
16.外部委託する


742 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:50:31 ]
>>737
げぇ!

743 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 19:55:57 ]
1. その本を閉じる
2. 2chviewer をアンインストールする


744 名前:デフォルトの名無しさん [2009/10/26(月) 02:48:27 ]
方向キー押すと1づつ大きくなるカウンタってどうやって作りますか?
押している間じゃないです
お願いします

745 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 03:03:15 ]
処理系依存

746 名前:toya mailto:age [2009/10/26(月) 06:15:16 ]
>>726

準拠する規格は『JISX3010:2003 プログラム言語C』で
www.jisc.go.jp/ 」→「JIS検索」→
「JIS規格番号からJISを検索」で「X3010」と入力し
「一覧表示」→「JISX3010」→「規格の閲覧」で閲覧できます


747 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 06:27:28 ]
c99かよ



748 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:04:50 ]
int func(){
 for(;;){
 }
 return 0;
}

こういうスタイルって、紙の本で行数が間延びしないためのものだろ。
実機での記述でこのスタイルにしてる奴って、それを理解してないんじゃないのか?


749 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:14:43 ]
昔の画面全体で25行しか無い時も有効だったかもな。

750 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:18:30 ]
FDD全盛のころは改行コードすらもったいなかったんだよ

751 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:53:35 ]
>>748
ディスプレイで見たときにも間延びするとかっこわるい。

752 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:03:07 ]
詰まってる方がかっこわるいだろ

753 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:34:43 ]
int foo(int n, int m)
{
  int i, j, k, something;

  for ( i = 0; i < n; ++i )
    if ( i != m ) {
      (void)something;
      for ( j = 0; j < n; ++j )
        for ( k = 0; k < n; ++k ) {
          (void)something;
          if ( k != m )
            (void)something;
          {
            int a, b;
            (void)(something = a + b);
            (void)something;
          }
        }
    } else
      (void)something;
  (void)something;

  return 0;
}

関数化しろとかインデントが2カラムと言うのは無しで、こういうソースはできれば見たくない

754 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:36:40 ]
>>753
見なきゃいい
エディタ起動時に必ず整形ツールを通すようにすればいいだけだ

755 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:38:01 ]
この形に美しさを感じられない奴は
コンピュータプログラミングには向いていないよ。

756 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:43:13 ]
>>753
別に悪くないと思うが。
じゃあどんなスタイルが良いんだ?

定番で悪いが
Linux流プログラム書法
ttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/CodingStyle.html

757 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:51:07 ]
プログラムの途中でコアを吐く?のだけど、そんなエラー見たことないし、
調べても何か特定の原因があるってわけでもなさそうなのでさっぱり意味がわかりません。
一つ一つの処理ごとにprintfを挟んでみたところ以下のようでした。

#define _XOPEN_SOURCE

#include <stdio.h>
#include <string.h>
#include <unistd.h>

main(void)
{
int i, j, len;
unsigned char tripkey[11] = "";
unsigned char salt[3] = "";
unsigned char trip_f[256] = "";
unsigned char trip[11] = "";

printf("トリップキーを入力:");
scanf("%u", &tripkey);

printf("トリップキー入力"); ←これが表示されずにコアを吐く



758 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:54:03 ]
>>757
> scanf("%u", &tripkey);

scanfの使い方調べろよ

759 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:54:36 ]
>>753
Java見たいで嫌だ書き直す
int foo(int n, int m){
  int i, j, k, something;

  for(i = 0; i < n; ++i){
    if(i != m){
      (void)something;
      for(j = 0; j < n; ++j){
        for(k = 0; k < n; ++k){
          (void)something;
          if(k != m) (void)something;
          {
            int a, b;
            (void)(something = a + b);
            (void)something;
          }
        }
      }
    }else (void)something;
  }
  (void)something;
  return 0;
}
漏れが許せる隙はこれが限界だ

760 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:54:48 ]
制御にくっつく単文でもブレースで括ってくれと言いたかったんだ
ブレースだけの行があるのが嫌な人もいるんだろうけどね
もう慣れているからどちらでもいいんだけど、修正時のエンバグ対策に{}付けていた体質を改めようかな、はっはっはぁ

761 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:00:43 ]
>>753
インデントついてるからまだましだけど
その書き方でインデントめちゃくちゃなやつもいた

if(k != m) (void)something; {
  int a, b;
  (void)(something = a + b);
  (void)something;
  }

とかもう

762 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:10:11 ]
関数は

int
foo(int n, int m)
{
}

って書く方が好みだ。
関数名を検索するときに、/^foo\(/でジャンプできるからな。
'{'を独立した行に置くのは、K&R第1版の頃の
foo(n, m)
 int n;
 int m;
{
}
からの慣れかな。

763 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:13:37 ]
>>753
他人が読むことを想定していないコードだな

764 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:14:21 ]
>>763
具体的にどこがそうなのか挙げてみれ

765 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:16:07 ]
スタイル議論してるスレがあるはず。

766 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:16:56 ]
関数は

/*!
 * @brief fuga
 *
 * hoge
 *
 * @return piyo
 */
int
foo(
    int n, /*!< [in] bar */
    int m /*!< [in] baz */
) {
}

って書く方が好みだ。
ただの似非Doxygenスタイルだけど。

767 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:17:47 ]
>>764
わかってるくせに



768 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:18:59 ]
>>759
Java みたいなのはお前の方だw

769 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:20:59 ]
int foo(int n, int m){
int i, j, k, something;

for(i=0; i<n; ++i){
if(i != m){
(void)something;
for(j = 0; j < n; ++j){
for(k = 0; k < n; ++k){
(void)something;
if(k != m)
(void)something;{
int a, b;
(void)(something = a + b);
(void)something;
}
}
}
}
else
(void)something;
}
(void)something;
return 0;
}







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<215KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef