1 名前:デフォルトの名無しさん [2009/12/15(火) 23:42:55 ] C言語の*入門者*向け解説スレッドです。 ★前スレ C言語なら俺に聞け(入門編)Part 57 pc12.2ch.net/test/read.cgi/tech/1260020924/ ★過去スレ 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++室 Ver.70【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1258873470/ とか ★教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 133代目 pc12.2ch.net/test/read.cgi/tech/1260532772/ ★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
477 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 00:30:12 ] いいじゃんx86の機械語体系が滅茶苦茶でも 速くて正確に動けばそれでいい
478 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 00:33:33 ] 出て行けw
479 名前:デフォルトの名無しさん [2009/12/22(火) 01:00:31 ] 68系の衰退は80系との勝負じゃなくRISCの台頭によることだろ
480 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:04:20 ] 68を知るようなジジイが珍答披露してるのか・・・ どんな人生送ってきたんだ
481 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:11:48 ] 4桁の68系はOSに恵まれなかった・・・
482 名前:デフォルトの名無しさん [2009/12/22(火) 01:15:25 ] あんなもんにOSなんか求めてなかったし、あるのを知っててスルーが当時の答えだった # ジジィ発言は気持ちわかる # 当時の俺も同じ心境だったから
483 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:20:16 ] 灰列便利だな 配列があれば複雑な数値計算もできそう
484 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:21:13 ] スレタイ読め ふざけんな!
485 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:39:24 ] 多次元配列って結局人間がわかりやすいってだけで 一次元配列とかわらん? a[100]ってやるのもa[10][10]ってやるのも確保されるメモリは一緒でしょ?
486 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:43:36 ] 多次元配列の学習をする時、例題とかやらなかったのか
487 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:45:46 ] 型が違う
488 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 01:48:48 ] というか、ベクトルとスカラーほど違う
489 名前:デフォルトの名無しさん [2009/12/22(火) 01:49:13 ] 4桁68に対してはOSどころかBIOSにさえ抵抗があったが BIOSの考え方自体は後のマシンとの付き合い方にSVCとはまた違った方向性を示してくれたことには違いない 当時はアセンブラ主体だったが、そこでのノウハウが後にCを始めてから**や(*)への一挙跳躍をもたらしてくれた
490 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 02:24:24 ] しつこいなあ
491 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 03:54:39 ] >>489 お前いい加減にしろよ みんなうんざりしてんだよ
492 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 04:33:05 ] 当事者ならこんなとこで想い出語らないよ 最近調べたんでしょ
493 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:52:24 ] 入門スレでの知ったかはよくあること。上級者スレに行くほどのまともな知識は無い ただのガス抜き
494 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:48:06 ] せめてアセンブラスレに行けよなあ スレ違いもいい所だ
495 名前:466 mailto:sage [2009/12/22(火) 11:58:54 ] C使いと8ビットCPU経験者は、かなり重なるから食い付きがいいんだろ。
496 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 12:11:05 ] クズが開き直ってんじゃねえよw
497 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 03:35:38 ] 今までPerl、Javaとやってきたんだけどもうランタイムが必要な実行ファイルにはうんざり。 ネイティブの何も必要としない純粋ピュアな.exeを作りたいと思って 手頃な入門サイトでCを押さえて今Win32APIをやってるんだけど、これが中々おもしろい。 なんの仲介もなく直にWindowsとふれあってる感じがする。 今までダブルクリックで起動するjar(関連付けによっては動かなかったりする)を使ったり それをexewrapでexe化したりなんだかなぁという事ばっかりやってたのでCで普通のexeが作れて感動。 Cはポインタが難しいとよく言うけど実際やってみるとこれPerlのリファレンスじゃんって感じで飲み込めた。 他にもPerlやJavaの仕様の前身となったようなものが見受けられてあぁ、これが元ネタなんだなと思うこと多数。 なんの質問でもないけど、C言語っておもしろいですね。
498 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 03:49:10 ] そのうちmsvcrt.dllに憤ったりするのだろうか それにしてもサクサク動くから楽しいかな Perlと比べると文字列の処理が貧弱すぎてびっくりするかも知れんけどがんばってー
499 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 07:13:10 ] 単なる時代錯誤だな
500 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 09:54:16 ] >>497 Win32API やってるなら windows.h を少しずつでも見たほうが良いよ。
501 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 10:53:19 ] >>497 アセンブラおすすめ。 APIの呼び方さえ覚えておけば実行ファイルがあまりにも小さくなって感動する。 今までのWindowsアプリはなんだったんだって思う。
502 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 10:54:59 ] APIの呼び方を覚えるのが手軽なら誰もC言語なんてやらないわ。
503 名前:466 mailto:sage [2009/12/23(水) 11:03:44 ] >>502 APIの呼び方は、アセンブラでも手軽だぞ。 それ以外が大変だけど。
504 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:05:19 ] 呼び方を覚えるくらいなら手軽だぞ アセンブラはコードがいちいち長くなって書くのも読むのも非常に面倒なだけ
505 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:46:17 ] 今どきは構造体だのローカル変数だのも使えるアセンブラもあるからな。
506 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 12:00:30 ] アセンブラでもwindowsのバージョンごとに どのDLLがあるとか無いとかから開放されないようが気がする。
507 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 14:41:12 ] またか・・・・・・・・w
508 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 22:56:41 ] Cで書くかアセンブラで書くか・・・ pc12.2ch.net/test/read.cgi/tech/1096478651/ アセンブリ言語最強伝説 pc12.2ch.net/test/read.cgi/tech/1199952217/ Windowsってアセンブリで作られてる? pc12.2ch.net/test/read.cgi/tech/1248434163/
509 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 22:57:03 ] 機械語なら俺に質問しろ! pc12.2ch.net/test/read.cgi/tech/1035288252/
510 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 22:59:21 ] 堕落したCプログラマのレベル -10 レベル-10: むしろnasmとかみたいなちゃんとしたアセンブラを使ったほうが楽だったことに気付く。 d.hatena.ne.jp/w_o/20060808#p3
511 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 01:48:43 ] ソートのプログラムを組んだのですが、コンパイルしようとすると report5.c : 7 : error : syntax error before numeric constant というエラーが出ます どう修正したらいいのでしょう? ソースは以下です kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10302.c
512 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 01:57:49 ] >>511 > #define N 50 > > void sort(int x[], int N) #defineでシンボルNを定義しているので、2行後が void sort(int x[], int 50) と置換される。
513 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 02:27:34 ] >>512 深夜にありがとうございます! 仮引数になっていないのが原因だったってことでしょうか? Nを小文字のnに変えてもみたのですが、今度は report5.c : In function `sort': report5.c : 9 : error : 'x' redeclared as different kind of symbol report5.c : 7 : error : previous definition of 'x' was here と出てしまいました… ググってみるとxが衝突してるとのことですが、関数部とデータ入出力部の両方でxを使用しても問題ないはずですよね?
514 名前:511 mailto:sage [2009/12/24(木) 02:39:11 ] 連投すみません! 自己解決しました どうやら7行目と9行目の両方で変数xを定義していたのが問題だったようで… >>512 様ありがとうございました
515 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 12:57:05 ] 食ったー 満足じゃー
516 名前:デフォルトの名無しさん [2009/12/25(金) 10:34:07 ] 問題文: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10305.txt linuxで、g++でemacsで書いて、k-termでコンパイル。 すみません。今日締切の問題で、スレ違いかもしれないんですが、どうかスレ主さま、作ってください。 お願いします。
517 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 10:38:26 ] 宿題スレがあるのにスレ違いと分かっててなんで質問するんだ?あほ? このスレの方が勢いがあるから?当然のようにageてるし
518 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 10:46:10 ] pc12.2ch.net/test/read.cgi/tech/1260532772/442 酷いマルチ>>516 のほうが後ってのが特に
519 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 10:54:38 ] 大抵宿題スレも見てるから、ここにマルチすると逆効果なんだけどね
520 名前:デフォルトの名無しさん [2009/12/25(金) 13:46:35 ] >>517 ,518,519 すみません。すれ違いでした。でも本当に急いでいて・・ みなさん、無駄にスレ使ってしまってすみませんでした。
521 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 13:50:14 ] >>520 逆効果なんだけど特別に許してあげるよ 感謝すればね
522 名前:デフォルトの名無しさん [2009/12/25(金) 14:11:41 ] >>521 はい。
523 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 14:16:28 ] 書き込めば書き込むほど、答えが返ってくる確率が下がるんだがw
524 名前:デフォルトの名無しさん [2009/12/25(金) 17:01:15 ] sprintfのところでエラーもでず勝手にPGが終了されるんだがなんだこれ?
525 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:03:53 ] ソース見せてみ
526 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:07:18 ] すみませんうつし先のバッファサイズが足りてなかったみたいデス しかし何も出ず終了とは
527 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:07:36 ] バッファ足りてないとか
528 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:08:36 ] バッファ足りてないとか
529 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:08:37 ] おぉリロード…
530 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 17:33:21 ] >>528-529 この間1秒
531 名前:デフォルトの名無しさん [2009/12/25(金) 18:31:07 ] PGが終了って、マ板ネタか?
532 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 18:32:10 ] マは常に終了してるからな^^
533 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 18:42:41 ] SEは終了してないとか
534 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 21:26:12 ] defineってどういうときにつかうん?
535 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 21:29:04 ] 気持ちよくなりたいときに使う
536 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 21:58:05 ] >>534 そりゃあプログラムを変更したい時に一か所一か所変更するのは面倒でしょ
537 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 22:06:15 ] defineに限らず構造体の定義などもまとめてヘッダファイルに記述する。 あとで変更したくなったときに、ロジック側を弄らなくて済むようにしておく。 あとはデバッグスイッチとかの条件コンパイル用かな。
538 名前:デフォルトの名無しさん mailto:sage [2009/12/25(金) 22:32:54 ] 多用するとタコ殴り
539 名前:466 mailto:sage [2009/12/25(金) 22:38:24 ] MFCは、すごいマクロ使ってるね。あれはあれでありだとは思うが。
540 名前:デフォルトの名無しさん [2009/12/25(金) 23:19:37 ] >>539 頼むから冗談はよしてくれ
541 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:08:47 ] クリスマスにKFCでも食って気が上機嫌なんだろ
542 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:16:14 ] 気が上機嫌って何かおかしい気がしたけどよく考えたらそうでもない気がしないでもなかった
543 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:23:06 ] いや、おかしい。気が狂ってると書こうとして それはあんまりだと思って、上機嫌に変えた、つもりだったのです。
544 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 00:45:24 ] >>537 defineも構造体定義も、ヘッダファイルに書く場合は複数のソースファイルに公開する必要がある場合。 ひとつのソースファイルだけで使用するなら、そのソースファイルで定義するのが基本。
545 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 01:37:05 ] >>530 あたまわるいなぁ、とか言われなかったんだな
546 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 01:57:05 ] >>539 MFCのマクロは、Cプリプロセッサの究極をいってるな。 いっちゃってるけど。
547 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 08:11:39 ] 誰かMFCのマクロを見せてくれ
548 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 17:30:50 ] >>546 いやいや、究極と言えば、Boost.Preprocessorとかメタプログラミングの類。 こんな調子で、演算とかさせるんだぜ。頭がおかしいとしか思えない。 ttp://d.hatena.ne.jp/qnighy/20091107/1257587259 MFCなんてかわいいもんだ。
549 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 18:14:49 ] Boost.Preprocessor はもう天才的。 プリプロセッサメタプログラミングだぜ? 本当にやりやがった・・・的な衝撃が走る。
550 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 18:32:21 ] ×天才的 ○病的
551 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 18:34:03 ] メタプロ見てるとなんかもう新しい使いやすい言語でもつくりゃいいのにって思う
552 名前:デフォルトの名無しさん [2009/12/26(土) 19:00:45 ] 思うね
553 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 19:11:58 ] すいません。 feofというのは一体何の略なんでしょうか?
554 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 19:21:16 ] File EOF だと思うよ EOF は End Of File 細かいことはキニシナイ
555 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 19:21:43 ] >>553 eof = End Of File FILE *fp を取り扱う関数は、一般に fopen(), fclose(), fseek() のように頭に f がつくので、 f + End Of File = feof() 本当のところは知らないのですけど。
556 名前:553 mailto:sage [2009/12/26(土) 19:26:58 ] feof end of file 略 でググってみましたらそれっぽいものが見つかりました。 ファイルポインタがEOFに達しているかどうかを調べるんだそうです ttp://www.phpbook.jp/func/file/index3.html ありがとうございました
557 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 19:36:57 ] 略称の語源じゃなくて用途を調べてたのかよw
558 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 22:59:09 ] whileとSleepを使わずに 変数の値が変更されたときに自動で関数に飛ぶことって出来ないんですか? atexit()みたいな感じに
559 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:00:00 ] >>558 環境依存なのでOS等の情報が必要です
560 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:02:39 ] atexitは自動じゃないよ
561 名前:デフォルトの名無しさん [2009/12/26(土) 23:09:56 ] if ((flag & BIT1) && (flag & BIT2)) { これをもう少しスマートにやる方法ないですか?
562 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:16:03 ] コンパイラに最適化してもらいたい気分だ
563 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:22:17 ] すいません。 codepad.org/3p4Q55et 本に書いてある内容を要約するとこんな感じになるんですが、 ( !feof( stdin) ) というのは一体何を表しているのでしょうか。 stdinの中身がEOFにならなかったら〜という風に読めるのですが、 stdinとはcfPtrを指しているのでしょうか? stdinでググると標準入力だというようなことが出てくるのですが、 標準にそのままキーボードから打たれたものがEOFになったら〜という意味でいいのでしょうか?
564 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:28:05 ] >>563 戻り値 feof は,指定したストリーム上の最後の入力操作でファイル終了標識が 検出されると 0 以外の値を返し,ファイル終了標識に達しなければ 0 を返します。 とあるから、標準入力からWindowsならCTRL+Z、Unix系ならCtrl+Dが押される と !演算子によって条件が反転し真になる
565 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:28:18 ] >>561 ビットフィールドを使う
566 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:29:12 ] >>563 そうだよ。 ソースに書いてある通り、ctrl-zでEOFが入力される。
567 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:29:46 ] >>561 それぞれ1bitなら if ((flag & (BIT1|BIT2)) == (BIT1|BIT2))
568 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:34:42 ] >>564 >>566 標準にキーボードから入力していてEOFが検出されなかった場合〜という意味ですね。 ありがとうございました。
569 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:37:40 ] キーボードとはかぎらないしCtrl-Zともかぎらないがな
570 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:42:21 ] >>569 すいませんどういう意味でしょうか?
571 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:46:41 ] >>570 ファイルからリダイレクトとか。
572 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:46:47 ] >>570 パイプやリダイレクトとか
573 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:47:47 ] >>570 C言語にはストリームという概念がある。 ここに結び付けられるものは何でも良い。ファイルでも入出力デバイスでもC言語から見れば一緒。 ただ、一般的なPCではディスプレイ、キーボードが付いてるので"デフォルト(標準)"をそこにしてあるだけ。 標準入力がシリアル通信ポートだったり、標準出力がファイルだったりする環境もあるってこと。
574 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:53:40 ] >>558 あきらめてアクセサメソッドを介して変数を参照するようにしてはいかがでしょうか。
575 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:54:09 ] DOSやWindowsならCtrl+ZだがUNIX系ならCtrl+Dだったかな
576 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 23:58:10 ] >>571->>573 >>575 入力できればなんでもいいってことですか、ありがとうございました。
577 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 00:00:00 ] 何でもいいわけじゃない 何が割り当てられてるかだ