1 名前:静的領域の名無しさん mailto:sage [2008/08/12(火) 18:23:10 ] C言語の入門者向け解説スレです。 教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題を片付けます 114代目 pc11.2ch.net/test/read.cgi/tech/1216746971/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 33 pc11.2ch.net/test/read.cgi/tech/1217073697/ 過去スレ 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
136 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 13:58:05 ] >>134 それでもでるんですけど
137 名前:1 mailto:sage [2008/08/14(木) 13:58:48 ] いやむしろ悪化してコンパイルすら通らなくなるんですがw 試してから言ってくださいよw
138 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:09:51 ] >>136 -- % cat foo.c typedef struct{ double a; char *mozi; }HOGE; HOGE data[200] = {0}; % gcc -c -Wall foo.c foo.c:9: warning: missing braces around initializer foo.c:9: warning: (near initialization for `data[0]') % sed -e 's/{0}/{{0}}/' foo.c > fooz.c % !g:s/foo/fooz gcc -c -Wall fooz.c % gcc --version gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- 警告でなくなるけど。
139 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:20:22 ] あれだっけ 初期化の指定が少ない場合コンパイラが勝手にやるんだっけ?
140 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:26:12 ] -W とかつけてんじゃね?それでも警告ですむと思うんだけど
141 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:36:58 ] >>140 >138では-Wallで警告が消えているね。 >>139 コンパイラがっていうか、0で補うのが仕様ですが。
142 名前:140 mailto:sage [2008/08/14(木) 14:53:48 ] >>141 いや>>138 踏まえて言ったんだが
143 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 15:00:14 ] >>132 されてるよ 全部のメンバに対して=0;と書いたように初期化されるから 浮動小数点数でもポインタでも正しく0.0やヌルポインタになる
144 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 15:04:55 ] >>136-137 があほなだけだろ 次の質問どーぞ
145 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 22:36:59 ] C言語撃退講座 ~K&Rは置いて、俺の話を聞け この本ってどう?
146 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 22:41:47 ] 推薦図書/必読書のためのスレッド 41 pc11.2ch.net/test/read.cgi/tech/1215510861/ ここで聞けばいいんじゃね
147 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 01:46:50 ] linuxでwin用のアプリをコンパイルすることはできるの?
148 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 02:14:01 ] 理屈の上では可能だが、現実問題としてありえない
149 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 03:54:01 ] いや、結構普通だろw
150 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 03:55:08 ] クロスプラットフォームだっけ? コンパイラがあればできるんじゃね? というかlinux上で動くwinコンパイラなんてあるの?
151 名前:デフォルトの名無しさん [2008/08/15(金) 03:58:51 ] それは可能だろ 機械語を生成するだけだからな でも使った事はないし知らない 32bitPCで64bitや携帯の機械語が生成できるのと同じ
152 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 03:58:56 ] Cygwinターゲットのクロスgccはなんか聞いたことがある。
153 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 04:02:15 ] MinGW
154 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 04:02:22 ] >>147 とりあえず答えておくとmingwとか使えばできます
155 名前:デフォルトの名無しさん [2008/08/15(金) 04:04:44 ] こういうケースだとJavaや.NETはいいな
156 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 11:57:51 ] typedef union _BYTE{ unsigned char byte; unsigned bit0:1; unsigned bit1:1; unsigned bit2:1; unsigned bit3:1; unsigned bit4:1; unsigned bit5:1; unsigned bit6:1; unsigned bit7:1; } BYTE; sizeof(BYTE)がどうしても1になってくれないんですけど、どうすりゃいいんでしょう?
157 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:05:14 ] >>156 つーかbitをくくれよ
158 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:06:31 ] 忘れてたよ で、これ1byteにできないの?
159 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:08:13 ] あ、なんか自己解決したわ unsigned char bitn:1;にすればよかったのね
160 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:08:48 ] つーかそんなので悩むなら普通に byte に対してビット演算しろよ byte | 0x01 byte ^ 0x01 とかすればいいだけだろ?
161 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:50:01 ] 共用体でビットフィールド使っても無意味じゃないの?
162 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:52:20 ] ビットフィールド操作は大抵のコンパイラで糞なコードに展開されるわー もうちっと最適化できないもんかね
163 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:56:01 ] 糞だとおっしゃるだけの英知をお持ちならそのご自分の能力でなんとかなさっては?
164 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:57:29 ] そもそもワードを任意のビットで区切ろうという発想が糞 は言いすぎとしても処理効率なんぞ求めんな
165 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:57:57 ] 英知というほどの物じゃないけど、アセンブラでビット操作を書いたら こういう風には書かないだろうなあというコードになる。 C言語の仕様なので我慢して使ってるけど。
166 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:00:22 ] そこまで文句を言うならなぜ自分でアセンブらないの? で、それに対する答えがそのまま>>162 への答えだよ
167 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:02:15 ] インラインアセンブラは時々使うけど可読性が・・・
168 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:10:52 ] 宿題で世界のナベアツプログラムがでたんですが 3の倍数はいいとして 3のつく数の判定はどうすればいいんでしょう
169 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:15:27 ] 非標準だがitoa()を使って文字列に変換しstrchr()で判定する
170 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:18:34 ] >>168 それ、私が新人研修で出した課題だw sprintf()で文字列にしてから、strchr()で探すのが一番手っ取り早い。 真面目にやるなら、一桁ずつ10で割った余りをチェックすればいい。
171 名前:168 mailto:sage [2008/08/15(金) 13:39:07 ] なるほど、ありがとうございます あまりを出して調べるやり方でやってみます。 ああ、でもそれだと32とか321は無理ですよね 一桁ずつというのは、 1、3を引く 2、10で割ってあまりが0か調べる 3、違うなら1へ って感じですかね ちなみに学校の宿題ですw
172 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:55:02 ] 12345 12345%10 = 5 12345/10 = 1234 1234%10 = 4 1234/10 = 123 123%3 = さぇぁ〜ん!
173 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:55:37 ] %3じゃなくて%10ね
174 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:56:41 ] 321と言う数字があったとする 321 ÷ 10 = 32 … 1 32 ÷ 10 = 3 … 2 3 ÷ 10 = 0 … 3 余りに3が出たのでこの数字は3が含まれていると言う事がわかる と言うこと
175 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:57:59 ] >>170 そのやり方だと3の時に3を足さないと結果変わるね。 170の最後の行は 1 0かどうかチェック 2 %3の結果が0かどうかチェック 3 10で割った商と余りを別々に保存 4 余りが3かどうか 5 違うなら商を使って3へ てことだろうから32でも321でも対応できるよ。 ただsprintf使った方がラク。
176 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 14:00:57 ] C言語質問じゃなくてアルゴリズム質問だからスレ違い
177 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 14:45:08 ] cursesを使ってブロック崩しのプログラムを作っているんですが、 return関数やscanfなどの標準入力関数を使うと、 なぜかprintfやmvaddstr関数などを飛ばしてしまい、ハイスコアの名前入力が作れません。 名前入力はどのようにすればいいでしょう? メイン関数は下のようになってます int main(int argc, char **argv){ int score; char tmp[7]; initscr(); /* 画面の初期化 */ noecho(); /* エコーなし */ cbreak(); /* 一度に1文字入力をON */ keypad(stdscr,TRUE);; /* 矢印キーが使える */ if(LINES>MinY&&WCOLS>MinX){ window(); /* 画面描画 */ } else{ printf("Windou size is too small!!!"); // return 0; } score = go(); /* ゲームを実行 */ GameEnd(score); endwin(); /* ウィンドウ終了 */ return 0; } GameEnd関数では、mvaddstrで「GameOver」と出した後、 scoreの値とファイルの値を比較し、ハイスコアであれば mvaddstrで「HighScore!put your name」と書いた後に scanfで名前を受け取ろうとしたのですが、mvaddstrが抜かされてしまう感じです。
178 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:11:06 ] cursesを使ったこと無いから的外れのことを言うかも知れないが scanwを使っちゃ駄目なのか?
179 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:16:08 ] fflush(stdout)とか?
180 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:19:28 ] その肝心の部分を張らずに質問とはいい度胸だ
181 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:21:17 ] 環境依存すぎる まずinitscrやらnoechoやらの仕様を詳細にチェックしなおすこと モードを変えた後で元に戻さないとならないとかないか?
182 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:22:31 ] # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください
183 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:27:15 ] >>179 ぐぐってみますた。バッファフラッシュですね。ちょっとやってっます。 >>178 使ってみましたが無視されてしまいました。 GameEndのソースファイルは今こんな感じです(いろいろ注釈にして試したりしてるのでごちゃごちゃしてますが… endwin()を実行後に、注釈部のscanfなどをやってみてもだめでした・・・ void GameEnd(int score) { int i,j,k; char tmp[7]=" ",file[10][7]; FileRead(file); mvaddstr(LINES/2-2,WCOLS/2-5," GameOver!! "); for(i=0;i<5;i++){ if(score>=atoi(file[1+2*i])){ for(j=4;j>i;j--){ strcpy(file[j*2], file[2*(j-1)]); strcpy(file[2*j+1],file[2*j-1]); } mvaddstr(LINES/2,COLS/2-22,"HighScore!!Put your name!!(Max 5 ch\ ars)"); mvscanw(LINES/2+1,COLS/2-15,tmp); FileWrite(file); break; } } return; }
184 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:36:34 ] 本当にちゃんとハイスコア出してるか? あとbreakはそこ一箇所だけでいいのか?
185 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:37:46 ] >>180 ,182 すいません、ごちゃごちゃしてたので貼り忘れてました。 >>179 やってみましたがその部分になると凍結してしまいました… mvaddstr(LINES/2,COLS/2-22,"HighScore!!Put your name!!(Max 5 ch\ ars)"); fflush(stdout); fflush(stdin); scanf("%s",tmp); こういう順番でやってみたのですが >>181 やはりそうですよね… 学校の夏休み課題なんですが、cursesについての詳しい内容をほとんど教えられず 書き方だけしか教わってなかったのでさっぱりでした。 最悪カーセスモードを終了してからのscanfでやろうかと思ってるんですが、モードの終了の仕方もわからないで苦戦してます
186 名前:184 mailto:sage [2008/08/15(金) 15:37:54 ] あ、breakはいいのか 見間違えた
187 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:44:26 ] >fflush(stdout); cursesは標準出力じゃないから意味がない。 >fflush(stdin); 入力のフラッシュ動作は環境依存。 >scanf("%s",tmp); %6sにしてバッファオーバフローを避けよう。
188 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:45:19 ] >>185 fflush(stdin) は環境によっては segmentation fault になるんじゃなかったっけ? curses で入力がある限り読み飛ばせば大丈夫そうな気はする curses 使ったこと無いのでちゃんとかけないけど こんな感じかと while(キーボードバッファに何か残っている) 読み込む;
189 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:54:59 ] >>187 ,188 ふむふむ。勉強になります こんな感じに書き換えてみましたがどうしてもここで凍結してしまいます。 scanfをなくすだけでちゃんとmvaddstrの文が表示されて正常終了するのですが… mvaddstr(LINES/2,COLS/2-22,"HighScore!!Put your name!!(Max 5 ch\ ars)"); while(fgetc(stdin)!=EOF) echo(); scanf("%6s",tmp);
190 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:59:25 ] >>189 それは駄目だ fgetc(stdin)==EOF になった時点以降は stdin から入力することはできない dos (conio.h) でいうところの while(kbhit()) getch(); っていうのがあるはず
191 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:02:47 ] あーそうそう、curses使っているときに標準入力を使おうとすると、想定外の場所にカーソルが出たり 標準入力の端末動作で画面が崩れたりするからそもそも標準入力は使えないと思う。
192 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:05:28 ] ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
193 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:09:02 ] うおおおお、奥が深い getch()ですね、ラケット移動などのカーソル受付をそれでやってます。 ただ、kbhit()にあたる方が分かりません。 仕様では「ゲーム終了時にTOP5に入っていたら名前を入力してもらう」と書いてあったのであれなんですが 友達はウィンドウモードにする前に、一番最初に名前入れてもらってやったと言っていました。 最悪自分もそうしようかなと思っていますが、、何か腑に落ちない感じがします。
194 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:14:42 ] 良く分からないけどバッファを読み飛ばすなら while(getch() != '\r') 的な感じでどうだろうか?
195 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:17:45 ] >>193 ググってみた while(getch()!=ERR); でよさげ
196 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:22:41 ] >>191 なんと。 授業では入力方法は標準入力しか習ってないので…やはり一番最初に聞くしかない感じですかね >>193 すいません初心者で。以後気をつけます 環境は学校の端末(ice環境)を外部環境(PodeRosa)で動かしてます。 >>194 、195 行の左端に戻る…と。ERRも始めてみました。勉強になります どちらも標準入力は受け付けなかったんですが、mvaddstrは表示されるようになりました! mvaddstr(LINES/2,COLS/2-22,"HighScore!!Put your name!!(Max 5 ch\ ars)"); while(getch()!=ERR); echo(); scanf("%6s",tmp); 今はこんな感じです
197 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:26:10 ] そこでscanfじゃなくてcursesでの入力受付使えばなんか出来るんじゃないかな?
198 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:32:20 ] おお、早速以下のコードでやってみました! …が、出ませんでしたorz mvaddstr(LINES/2,COLS/2-22,"HighScore!!Put your name!!(Max 5 ch\ ars)"); while(getch()!=ERR); echo(); mvscanw(LINES/2+2,COLS/2-22,tmp); +------------------------------------------------------+ | | | |Time 1 | #### #### #### #### #### #### #### |Level 1 | |Score 10 | GameOver!! |HighS | #### #### #### #### #### #### |Name | HighScore!!Put your name!!(Max 5 chars) | | | | | | | | | | | ssh{*********}262: |
199 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:43:00 ] すいません、大分レス引っ張ってしまって。 いろいろアドバイスくださってありがとうございます。勉強になりました。 とりあえずは期限もあとわずかなので仕様とは少しずれてしまいますが以下のソースで提出だけしておきます ただ、自己満足になりますが悔しいのでいちおう現段階のソースも残しておきたいと思います。 int main(int argc, char **argv){ int score; char tmp[7]; printf("Hello,put your Name!(Max 5 Chars)\n"); fgets(tmp,6,stdin); printf("Let's play!!\n"); sleep(1); initscr(); /* 画面の初期化 */ noecho(); /* エコーなし */ cbreak(); /* 一度に1文字入力をON */ keypad(stdscr,TRUE);; /* 矢印キーが使える */ if(LINES>MinY&&WCOLS>MinX){ window(); /* 画面描画 */ } else{ printf("Windou size is too small!!!"); // return 0; } score = go(); /* ゲームを実行 */ GameEnd(score); endwin(); /* ウィンドウ終了 */ return 0; }
200 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:56:44 ] fgets()の常道では、第2パラメータは第1パラメータのサイズだ。 つまり、fgets(tmp, sizeof(tmp), stdin)でいい。 それから、(文字数オーバーじゃない場合に)末尾に改行文字が残ることにも注意。
201 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:01:18 ] >>85 win32プロジェクトでやってもエラーが出ました。 ちなみに拡張子を.cppでやるとコンパイルできます。 Cなんですけど。
202 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:05:30 ] >>201 それが出るとき、プロジェクトのプロパティの全般の共通言語サポートはどうなってる?
203 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:15:29 ] >>201 共通言語ランタイム サポートのことですよね。 共通言語ランタイム サポートを使用しないになってました。
204 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 18:23:13 ] これ以上はVC++あたりかな。 /clr のオプションがつくとCとしてはコンパイルできなくなる。 /clrをつけるのが、共通言語ランタイムサポート。 つまり、キミの状態はあきらかにおかしい。 同じ症状を持った人じゃないとわからんな。
205 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 09:52:03 ] なにかオススメのコンパイラはありますか?
206 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 10:59:01 ] >>205 LSI C-86
207 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 12:23:44 ] >>205 私はgcc(cygwin)を使っています。
208 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 14:34:52 ] ギャップバッファのサンプルコード等ありましたら教えて下さい
209 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 14:42:31 ] >>208 www.amazon.co.jp/dp/4938704269 この本に載ってるけど、見てみたらすごい値段になってるな。
210 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 15:20:02 ] >>209 凄く・・・高いです。 どこかのサイトにCで書かれたサンプルコードは無いのでしょうか
211 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 17:11:22 ] aibm4.main.eng.hokudai.ac.jp/~takty/pro/gapbuf/index.html ほれ。つーか自分でぐぐれよ まー俺もテキストはいじるので研究させもらうわ
212 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 17:26:47 ] >>211 すまん、それは昨日見たんだが、 C++はどうも・・・ ありがとうございます。
213 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 17:59:15 ] >>212 おいおい、100行ちょっとのソースも駄目なのかよw
214 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 19:20:38 ] 本が高かったら図書館に行けばいいじゃない
215 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 19:25:22 ] >>213 うん、駄目なのよ、C++分からないのよ >>214 既に取り寄せ連絡したから問題無い
216 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 19:33:43 ] そのソースを解析できないようじゃあ洋書を翻訳したのなんて厳しいんじゃね? ちなみにグーグルにはこんなのもあって books.google.co.jp/bkshp?hl=ja&utm_source=ja-wh
217 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 19:41:10 ] >>216 書籍だが、C++使える事前提で解説されてるの?
218 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 20:44:06 ] 100行くらいならCに書き直してやろうかと思って>>211 見にいったら 死ぬほど丁寧に解説されててワロタ あの解説文でわからないなら本読んでも無駄じゃない?
219 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 20:47:24 ] つーかギャップバッファの代替ロジックもおおよそ浮かんだけどなあ。 イメージはファイルシステムの情報管理の方法だよ
220 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:08:41 ] K&Rみたいな有名本ってほかになんかある?
221 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:16:13 ] >>218 Cに書き直して下さい
222 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:21:46 ] >>218 死ぬほど、とかそんな次元じゃなくて、 STL?template?operator?T& x?ってなんぞ?ってな感じでして、 C言語スレでC++のソースコード見せられるとは予想外でした。 C++じゃ全く読めなくて、すみません
223 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:23:28 ] これってさ双方向リストとかやってればすぐに応用かけそうだよな。 ギャップって呼ばれるのは特に説明がかかれてなかったけど1ギャップ=1バイトではなく 1ギャップ=nバイトの塊だよな?
224 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:25:02 ] >>222 ソースは見ないで、下の解説文だけ読めばいいと思う あれだけ丁寧に解説してあればサンプルソースなんかよりもずっと理解しやすいと思う
225 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:31:13 ] >>223 図をみたら、nバイトとしか解釈しようがないと思うけど。
226 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:35:39 ] テキストエディタで考えると1ギャップ=64バイトから128バイトくらい間が理想か。
227 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:51:30 ] ネタではなく。 かなり前にMicrosoft Visual C++ 2005 Express Editionってのを やってみたんだけど、何をどうやっていかわからずいくつかくだらない ソフトを作って終わってしまいました。 やってみたいことは、ブラウザなどの操作を自動でやらしたい。 メールを受信して、本文中にある一部が定型のアドレスを 抽出し指定時間ごとにブラウザで開きブラウザに定型の文が 表示されたらタブを閉じる。 アプリケーションを操作する。などです。 こんなことできますか?できるなら何の勉強が必要なのか または近道なのか詳細お願いします。
228 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:59:39 ] >>227 C#でやったほうがいいんじゃね? ブラウザの操作は知らんけど、コンポーネントでIEの機能を使えるから、同様のことができると思う。 メールを受信してどうこうは、ググれば簡単に分かると思う。
229 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 22:00:02 ] >>227 ネットワーク系かな
230 名前:デフォルトの名無しさん [2008/08/16(土) 22:32:48 ] スロットのプログラムみたいね〜
231 名前:デフォルトの名無しさん [2008/08/16(土) 23:20:29 ] homepage3.nifty.com/mmgames/c_guide/index.html すいません、上記サイトを眺めて勉強しているのですが、 C言語を業務で行うっていうレベルはどの程度なのでしょうか。 単に数の受け渡しをトレースできれば、 業務に就いたとき問題ないですか。
232 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 23:30:08 ] >>231 そのリンク先の内容が理解できるなら、 業務に問題ないレベルだろうと思う。 >数の受け渡しをトレース ってのはよく解らんのだけど。
233 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 23:32:24 ] ぴんきり
234 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 23:37:46 ] >>231 > 単に数の受け渡しをトレースできれば データフローのことだと思うよ データフローはプログラミングの基本、いやシステム設計の基本でもある
235 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 23:38:27 ] >>231 ちょっと古くなってる部分もあるけど、C FAQくらいは目を通しておくとか。 www.kouno.jp/home/c_faq/ Cを使っている職業プログラマでもC FAQレベルに達してないのはいっぱいいるけど。
236 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 23:52:56 ] C言語やっててトレースなんて単語言った時点でたぶん減点。 ollyでもやってんのか?