1 名前:デフォルトの名無しさん [2009/03/02(月) 00:36:19 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/
266 名前: ◆XD9CNUCqag mailto:sage [2009/03/09(月) 14:34:43 ] >>262 氏 >…ただしただ読み流すだけではダメで、理解しながら読まないと、 ただ字面を追っているだけになる。 はい、どうやら私は読んで理解したつもりだっただけで 字面を追っていることをこれまで繰り返していただけのようです。 「早くCの知識を身につけたい」という気持ちだけが先走っていたといいますか。 勉強しても早々簡単にはみにつかないものなのにおかしいですね。 >>264 氏 もし自分で回答なんかしちゃったりしたらら駄目だしされまくりで 精神的に辛すぎるような気もしますが・・・
267 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:24:29 ] >>266 ダメだしされて何が悪い。直せばいいじゃないか。 ダメだしも指摘もなければずっと悪いままだぞ。
268 名前:デフォルトの名無しさん [2009/03/09(月) 15:43:56 ] 昼間に2ちゃんねるに書き込んでる人間なんてスキルも無いロクでもない人間なんだから 講釈なんて聞いても無駄だよ。 自分ができない夢を語っているだけなんだから。
269 名前: ◆XD9CNUCqag mailto:sage [2009/03/09(月) 16:46:35 ] 困りました・・・ 文字入力の基礎からやり直そうと思って勉強し直してるんですけども いつまでたっても目的のパスワードプログラムが出来そうもない・・・ 何となく問題の原因はわかりかけてるんだけど、漠然としてて・・・ そっから全然前に進まない ほんと使えないなぁ・・・私って・・・OTL >>267 氏 確かにその通りかもしれません すぐには無理でしょうが、いずれ力量うpしたら実践してみたいと思います。
270 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:16:13 ] 文字コード、文字列、数値
271 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 17:50:37 ] ゆっくりいこう
272 名前:デフォルトの名無しさん [2009/03/10(火) 01:04:54 ] あるバージョンのgccでは、複数のスタティックライブラリをリンクするとき liba.aがlibb.aの関数を使用し、libb.aがlibc.aの関数を使用しているとき gcc -o prog main.o liba.a libb.a libc.a の順番に書かないとundefinedなんとかというエラーが出る。 もしも、liba.aとlibb.aの双方が互いの関数を使用している場合、 これらのスタティックライブラリを上記のgccでリンクするにはどうすればよいのか。
273 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:46:29 ] gcc -o prog main.o liba.a libb.a libc.a liba.a
274 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 02:49:11 ] >>272 そうならないようにモジュールの配置を見直す。
275 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 07:01:54 ] >>272 そういうのを循環参照と言って、良くない設計の兆し。
276 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 08:38:45 ] gccって、あるバージョンとか噂とか、不確かではっきりしない事を よく書かれてるな。
277 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 12:32:55 ] >>272 昔のHP/UXにもそういうの(順序を人間が決めないといけない)があって lorder | tsort で依存関係をトポロジカルソートして makefile に食わせた覚えが。
278 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 13:59:34 ] /* getchar.c */ # include <stdio.h> int c, cc; main(){ printf ("getcharの実験 Ctrl + Z で終了\n"); while ((c=getchar())!=-1) {putchar('*'); putchar(c);} printf ("getchの実験 スペースキーで終了\n"); while ((cc=getch())!=32) {putchar('*'); putchar(cc);} } このプログラムの「while ((c=getchar())!=-1)」の「!=-1」って 「Ctrl + Z」をあらわしてるんですかね? それと、「while ((cc=getch())!=32)」の「!=32」ってのは 「スペースキー入力」を意味してるんでしょうか? いま、入出力を勉強中なのですが、これがよくわからなくて。 教えて下さい、お願いします。
279 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:02:32 ] 32はASCIIコードでスペース -1はEOFだろ。Ctrl-Zかどうかは環境による。
280 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 14:11:10 ] >>279 なるほど。 では、上のプログラムを数字の「1994」と入力したら終了するように 書き換えるにはどうすればいいのでしょうか? 自分では、「!=1994」と記述すれば問題ないだろうと思っていたのですが 実行してみると全く終了する気配がありません。 コンパイルも正常に通り、延々と入力させるプログラムに成り果ててしまいました。
281 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:15:22 ] 数値の1994と比較したいなら atoi(str) != 1994 まあ普通は strcmp(str, "1994") != 0
282 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:29:11 ] そのマジックナンバーは「悪い例」として何かに載ってるのかな・・・
283 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 14:32:40 ] >>249 からの流れか。 ってMSC5.1? MS-DOSの頃のじゃないのかそれw
284 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 14:49:37 ] >>281 なるほど、atoi関数使って整数文字列を整数値に変換してからでないと いけなかったんですか ということは文頭の#includeにstdlib.hを追加しないといけないのかな ありがとうございます名人 私は名人のようなPGになりたいです! >>283 はい、そうです。 調べてみたらPC9800シリーズに標準装備されてた頃のやつっぽいです。 まぁ、今のところ不自由はしていないので古くてもいいかなって思って 使っています。
285 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 16:04:26 ] あのーまたまたへたれ過ぎる質問で恐縮なのですが、 /* getchar.c */ # include <stdio.h> int c, cc; main(){ printf ("getcharの実験 Ctrl + Z で終了\n"); while ((c=getchar())!=-1) {putchar('*'); putchar(c);} printf ("getchの実験 スペースキーで終了\n"); while ((cc=getch())!=32) {putchar('*'); putchar(cc);} } この「while ((c=getchar())!=-1)」の「!=-1」の部分を「atoi(str) != 1994 」 に書き直すにはどうしたらいいんでしょうか? 自分でやってみたらえらい不細工な文になってしまってとても見てられたものじゃ なかったもので・・・ご教授願いたいのです
286 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 16:14:09 ] まずは1文字入力したら配列に追加していく仕組みを作ってみ 別関数にするのがいいけど
287 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 16:46:12 ] >>285 char str[1024] = {0}; int i = 0; とか宣言して str[ i++ ] = c; を追加
288 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 17:11:10 ] 「一文字入力したら配列に追加していく仕組み」は >>249 のリンク先のコードの中にもう入ってるんだけどねー ・文字=数値(ASCIIコード) ・文字列=文字の配列 質問者が↑をまだ理解しきれてないんじゃないのか あとatoi()をパスワード認証に使うのは同意できない パスワードも入力も文字列なのに、なぜ数値に変換する? 例えばもしパスワードが"1994"でなく"0083"だったら、入力が "0083"でも"083x"でも"83xx"でもOKになるんだけど、それが君の望む挙動なの? 自然に文字列どうし比較しようよ。「普通はstrcmp()」って書いてくれてるやん 『文字列は難しい』ってみんなが脅すから避けてるのかもしれないけど 『文字列(をうまく説明するの)は難しい』の意味だから気にせず勉強しろよ 理解できた後なら『俺どーしてこんな質問してたんだろ』ってなるよ、絶対
289 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 17:25:18 ] >>287 こんなERRがでちゃいました;; ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8960.txt gch2.C gch2.C(8) : warning C4135: conversion between different integral types gch2.C(11) : warning C4016: 'strcmp' : no function return type, using int as default gch2.C(11) : warning C4071: 'strcmp' : no function prototype given gch2.C(15) : warning C4016: 'getch' : no function return type, using int as default gch2.C(15) : warning C4071: 'getch' : no function prototype given gch2.C(18) : warning C4035: 'main' : no return value
290 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 17:33:23 ] 初心者で、関数の勉強中です。 テキストがカーニハン&リッチーなんですけど、ここでのハロープログラムは #include<stdio.h> main() { printf("hello,world\n); } と、とてもシンプルなんですけど、ネットを見ると #include <stdio.h> int main(void) { printf("Hello, World!\n"); return 0; } になっています。要するに #include <stdio.h> int hello(void); main() { hello(); } int hello(void) { printf("Hello, World!\n"); return 0; } というのが合わさったものと考えていいのでしょうか? 今コンパイラがある環境のPCからじゃないので、 上のプログラムでコンパイルされるかすら分からないのですが・・・。
291 名前: ◆XD9CNUCqag mailto:sage [2009/03/10(火) 17:36:06 ] >>288 全然理解仕切れていないのでもう少し文字列について辺りを勉強し直そうと 思います atoi()は、使っていて自分には荷が重い関数かもしれないと思ったので 「strcmp()」を使うことにしました。 まだ「strcmp()」も勉強不足で理解していないのでそこも勉強し直しの 範囲に入りますが。 今回、漸く自分の勉強課題が見えてきたような気がします。 >>288 さんの言葉を励みにして頑張りたいと思います。
292 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 17:54:12 ] C言語を始めようとかいうソフトでプログラミングしてコンパイルするじゃないですか そして完成したファイルがコマンドプロンプトで実行されるんですけど GUIってどうやって付けるんですかね、タダでやりたいんですけど
293 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 17:58:41 ] >>290 それでコンパイルは通る。けど、K&Rはそういう意図で書いてるわけではない。 本来mainの戻り値は必ずintなので、厳密に文法どおりなのはネットのほう。 (戻り値をintと明記し、引数をvoidと明示し、0を返す) K&Rのほうは警告オプション付でコンパイルすると 「戻り値の型が書いてないから勝手にintにするぜ」とか 「returnがないぜ」とか警告が出るはず。 K&Rはおそらく「一番はじめの入門だから、できるだけ例は短いほうがいいに決まってる」 ぐらいの気持ちでそう書いたんじゃないのか。信者には別の言い分があるのかもしれんが
294 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:03:27 ] K&Rを最初の本として選択するのはやめれ。 あれは他の言語をばりばり使っている人のための 「C言語仕様確認書」みたいなものであって 戻り値も知らないような初心者には難しい。
295 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:08:12 ] 一応、戻り値がないときはint, mainだけは戻り値を返さなくても良いと決まっていた…ような だから、間違ってはないはず… 記憶が曖昧なんであまり当てにしないでくれ 不親切なのには同意するが
296 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:13:43 ] そうだよ。 main は戻り値を返さなくてもいい。 なぜなら main が戻す値をどう扱うかが環境依存なので。
297 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:14:42 ] #include <conio.h> #include <stdio.h> int main() { int turn, i, ch; char pass[5]; for (turn = 0; turn < 3; turn++) { printf("パスワードを入力してください>"); for (i = 0; i < 4; i++) { ch = _getch(); if (ch == EOF) return 2; printf("*"); pass[i] = ch; } printf("\n"); pass[i] = '\0'; if (strcmp(pass, "1994") == 0) { printf("Ok\n"); return 0; } } printf("NG\n"); return 1; }
298 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:16:04 ] >>293-294 ありがとうございます。 学校で押し付けられたテキストがK&Rだったので・・・。 ネットを参考にしたら何か違うぞ?ってずっと思ってました。 main()は不可侵な関数だとてっきり・・・。 明日学校でガッツリと関数の勉強します。 K&R以外のテキストで・・・。 C言語って難しいっすね。
299 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:17:51 ] >>295-296 補足ありがとうございます。 戻り値とかもまだまだあやふやですが頑張ります。
300 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:18:56 ] 大昔はK&Rが仕様だったらしいな(知らんけど その後に仕様ができたんで、「K&Rが仕様どおりでない!」 ってのはある意味あってるけどお門違いかもしらん
301 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:25:18 ] K&Rが終わって 僕等は生れた K&Rを知らずに 僕等は育った プログラマになって 歩き始める オブジェクト指向を くちずさみながら 僕等の名前を 覚えてほしい K&Rを知らない 子供たちさ
302 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:37:04 ] int main(void)とかいちいちやるようなヤツのプログラムなぞその一行見ただけで他見る気なくす
303 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:41:13 ] それはない… 「いちいち」もなにもmainは一個しかないだろうが… 暗黙の宣言やらなんやらで警告出まくりなのに コンパイル通ってるんだからよしとするヤツのほうがきついわ
304 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:43:17 ] int main ( void ) main() void main() int main()
305 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:45:43 ] この話題定期的に出るな。規格準拠スレでやれ。
306 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:47:08 ] ごめんなさい
307 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 18:59:46 ] 石田晴久さん死去 インターネットの基礎築く www.j-cast.com/2009/03/10037360.html
308 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 19:17:14 ] 石田晴久といえばK&R
309 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:03:53 ] しつこいようだが、ANSI、ISO準拠の標準スタイルでは main関数への引数がないのであれば、C言語では int main(void) C++では int main() voidを書かなくて良いとのこと。 また、main関数はint型の戻り値とのこと。あくまでも準拠。
310 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:20:11 ] さらに、プログラムの開始はmain関数とのこと。その条件も含めて標準スタイルとのこと。 個人スタイルの押し付けをしていたら、キリがない。そこんと、よろしくー
311 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:26:13 ] ポインタ天国3を、ようやく私は理解することができた・・
312 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:46:43 ] main関数への引数を使う場合、int argc , char *argv[] というのも ANSI、ISOでは標準スタイルとして提唱している。ただし、 main関数内でその変数を用いていない場合、警告が出るので 何事も必要に応じて適切に。以上。
313 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:40:53 ] >int argc , char *argv[] めんどいからint ac,char *av[]って書いてる。 あとchar **argvって書くべきって意見も昔聞いた。
314 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 11:53:57 ] 4文字省略すると面倒じゃなくなるのか
315 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:03:58 ] > char **argvって書くべきって意見 覚えてる限りでいいからkwsk 俺も最初は**で書いてたけど、 mainの中で結局 for (i = 0; i < argc; i++) { argv[i]; } とかして[i]でアクセスするから、 *argv[]のほうが素直だと今は思ってる。
316 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:09:28 ] どっちでも同じ意味だからどっちでもいいと思うが。 データが連続していることを連想しやすいように[]を使うと言う意見もあるが、 argvのようにポインタの指す先が連続していて更にその中身のポインタが連続していることを表現できるわけじゃないし。 >>315 例えばstrcpy()のような関数を自分で実装するとしたら char * strcpy(char dest[], char const src[]);と書くの? 私は素直にchar * strcpy(char * dest, char const * src);と書くが。
317 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:30:38 ] > データが連続していることを連想しやすいように[]を使うと言う意見もあるが、 それはよくわからんが、 char *p;なら *(p + i)などという操作をイメージし、 char a[];なら a[i]という操作をイメージするという程度。 配列やポインタを渡す関数のパラメータは、 ポインタで統一して書いてる。 ポインタであるのに配列であるかのような書き方は嫌だ。 そういう意味では、mainのargvだけ特別扱いしてることになる。 同様の例でもmainじゃないとchar **ppとしてる。 mainのときは用途が>>315 に書いたように定型化してるというか、 argcを参考にargv[i]とするのを尊重してやりたいというか。
318 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:35:50 ] >>317 よく判らんのだが、まさかとは思うが*(p + i)なんて本当に書くの? argv[i]と書くのと同様に、件のstrcpy()の例ならsrc[index]という書き方になると思うのだけれど。 # 細かい言い訳は兎も角、main()だけは別扱いと言うことなら未だ理解できるが。
319 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:49:43 ] >>318 p[ i ]は *(p + i)のシンタックスシュガーだし
320 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:50:07 ] [i]でアクセスしたいってことは、 範囲がargcでわかってるからしたいこと。 そうでないときゃ、for (p = src; *p != '\0'; p++)としたりするでしょ。 あくまで[i]でやりたいならstrlenで一回文字列を調べてから、 for (i = 0; i < len; i++)とするでしょ。 上記のstrcpyだって、 char *strcpy(char *d, char *s) { while ( *d++ = *s++); return d; } ていうのもある。 長さを先に測りたい人は[i]すればよろし。 長さをパラメータで与えたい人は(int len)でも渡せばよろし。 ポインタでどうこうやるときは、つねに*(p + i)しなくたっていい。
321 名前:なんだかなぁ…… mailto:sage [2009/03/11(水) 12:53:46 ] >>320 いやだから、for (int index = 0; src[index] != '\0'; ++index)とは書かないの? なんで? >319の事実があるのに? 某組み込み系のガイダンスだとポインタ演算禁止なのに? 長さを先に測りたいなら[i]ってどんな理屈? 長さを先に測ってから*(p + i)しちゃいけないの?
322 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 13:10:39 ] つーか、オプション指定を避けるのにargv++することだって普通にあると思うがな。 >321もいい加減構うのやめとけ。
323 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 13:24:42 ] 好きにしろってことで終了
324 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 13:39:49 ] そうやって個々に任せた結果が使えないプログラマばかりが跋扈する現状というわけだが
325 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 13:41:36 ] そうやって自分のやり方をおしつけるから
326 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 13:59:10 ] 「前の会社ではこうやってたの!!」
327 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:14:09 ] 誰も>>320 のstrcpyに突っ込まないのはなぜ?
328 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:00:16 ] スレチだから
329 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:23:08 ] いちようMSDNでは↓のようになっとるの int main( ); または、次の引数も使えます。 int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
330 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:34:10 ] windowsでVisual Studio 2005を使用しています。 過去に作ったコンソールアプリケーションを編集しようと思ったのですが 不幸なことに.hファイルと.cppファイルを消してしまったために 編集ができない状態です。現状ではobjファイルが残っており、 デバッグコマンドなどでプログラムを動かすことはできるものの、 どうしても元のソースファイルを手に入れる必要があるのですが objファイルからcppファイルに逆コンパイルする方法はありますでしょうか?
331 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:51:29 ] >>330 ありません。
332 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:55:41 ] 大体どのコーディング標準でも 重要なのは一貫性を保つことであって、些細なことは個人の自由としている。 他人のコードに手を入れるときは、その人の流儀に従うべきで、 自分の宗教を持ち込んで後の読み手のリズムを狂わせてはいけない、とある。
333 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:26:23 ] >>330 objも消しちゃえば諦めがつくぞ すっきりしてまた一から出直そう
334 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:31:44 ] 逆アセならぬ逆コンパイラってないのかな。 objファイルはリンク前のコンパイル済みファイルなので 逆アセでもできそうな気がするけど。
335 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:39:07 ] >>331 ,333 どうしても諦めがつかなくてorz >>334 確かに、逆コンパイルというと語弊があったかもしれません… なんとか逆アセンブル出来ませんかね?orz
336 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:15:26 ] >>335 逆アセンブルならできるよ、まぁお前に読めるとは思えないけどさw いっぱいあるから探してみなよ 確実に1から書き直したほうが早いだろうが
337 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:03:23 ] 自分が書いたコードなら関数名見れば大体流れが読めるはずだしな
338 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:27:51 ] >>332 あまりに酷いコードの時はそうも言ってられないw
339 名前:デフォルトの名無しさん [2009/03/11(水) 19:45:07 ] >>335 逆アセンブラならvisual studioについてるよ。
340 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:44:10 ] 寧ろディスクから消したのが最近ならサルベージしてみてもいいかも。 案外、オートバックアップのサーバ上に残っていたりしてw
341 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 09:08:14 ] Linux環境においてLL言語、シェルスクリプトなどでちょっとしたことをするのには、適切と言われていますが C言語では、そういったお手軽なライブリなどは、整備されていないのでしょうか? LL言語、シェルスクリブトが適している分野をCで書くのは、どうなんでしょうか? Cに偏った使い方をするなら、binコマンドなどのcoreutiltyのmanやソースを読んで、巧みに使うのがいいんでしょうか? 住めば都で慣れれば、C言語での保守も苦では、なくなるものなのでしょうか?
342 名前:デフォルトの名無しさん [2009/03/12(木) 10:57:37 ] データのスムージングを行う処理を作りたいんですけど、 Savitzky-GolayアルゴリズムのCサンプルコードとかないですか?
343 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 12:19:52 ] >>342 NumericalRecipesにある。 ttp://www.nrbook.com/a/bookcpdf/c14-8.pdf 尤も、これ見ただけで実装できるかどうかは知らんが。
344 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:11:05 ] 初心者なのですが、ファイルからテキストを読み込んで一番大きい数字を発見したいです 43,2,21,23,みたいなテキストなのですが、質問があります ・テキスト中のスペースは無視されるのですか? ・メモリについてmallocとか全くわかってないのですが使わないとかなりヤバイですか?
345 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:29:37 ] >>344 ・無視されるように読めば無視される。 Ex.:scanf()系, atoi() ・使わなくてもできなくはないが、どっちみちポインタの扱いには慣れが必要なので、そういう意味ではやばい。 つーか、課題か何かでなければ言語の選択の段階で間違っている。
346 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:33:55 ] 実際はC#でするつもりなんですが何でするべきですか?CとC#しか知りません
347 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:45:09 ] C/C++は他の言語に比べて文字列解析が簡単ではない C#なら正規表現が使えるからかなり楽になると思うが 一般にはこの手の作業にはスクリプト系の言語がより向いている まあ、CとC#の選択なら、最初からC#のスレで聞いとけって話だ
348 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:46:58 ] すみません Cでも正規表現使えると思ってますたw ありがとうございました
349 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:55:57 ] >>348 Cの場合、C#みたいに標準で用意されていないの。
350 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 14:59:55 ] 何かインクルードしたら使えるとか?
351 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:01:12 ] >>348 今できたけど…「 ./a.out < ファイル名 」で使ってみて #include <stdio.h> #include <ctype.h> int main() { int c; int max = 0, num = 0; while((c = getchar()) != EOF){ if(isdigit(c)) num = num * 10 + c - '0'; else { max = (num > max) ? num : max; num = 0; } } max = (num > max) ? num : max; printf("max = %d\n", max); return 0; }
352 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:15:02 ] できればC#に組み込めるようにして頂きたい^^; 適当にコピペしたらインクルードやgetcharが使えなかった
353 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:25:25 ] ここはC/C++スレだ 移植は手前の仕事
354 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:28:52 ] フヒヒw
355 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:43:03 ] wwwwwwwwwwwwwww
356 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 15:46:18 ] サーセン
357 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:42:09 ] ソースコード書くなんて、下っ端の仕事
358 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:46:46 ] ソースも書けない糞上司
359 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:47:38 ] ソースしか書けない専門学校卒
360 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:51:35 ] ソースも書けない落ちこぼれに言われてもなー
361 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:59:11 ] 高卒の叩き上げが最強ってことで、ゆるして
362 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:19:56 ] 就職||卒業出来ないからって荒らすなよ。 >>342 numerical recipes in CやC++に載ってる。C++もベタに書いてあるので、 ++の意味はほとんど無いw あとはqtiplotだっけ? originのfree implementationの ソース読むとか、MSDNにも解説があるな。しかし簡単な式だから、すぐ作れるだろ 携帯からなので、PCでググればもっと探せそう。
363 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 13:46:55 ] >>362 >343 携帯だとすぐ下のレスも見られないのか? つーか、元質はCだと書いているのさえ見えてないのか。
364 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 18:01:41 ] >>363 >>343 はPCのFoxit readerでさえ読み込めないんだけど? どうせ貼るなら、こっち貼れ ttp://www.fizyka.umk.pl/nrbook/c14-8.pdf
365 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 18:55:28 ] >>364 >Foxit readerでさえ 「でさえ」? そりゃ Adobe Reader で読めなかったときに使う言葉だろ。
366 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 19:15:04 ] >>365 >>363 は携帯で読めないのかって書いてるじゃん。 まあもちろん携帯のadobe readerでも読めない訳だが。