1 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:26:08 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.40【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1184717430/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
2 名前:987 mailto:sage [2007/08/06(月) 23:28:56 ] int errsv = errno; int i,j,k,t; int No1,No2; int Rs[3500][20],Hn[3500]={0}; double u,x,y; double Odds[3500][20],Poll[3500][20],Poll_S[3500][20],Poll_T[3500][20]; FILE *fpr,*fpw; printf("%d\n",errsv); でもとくにないです。 BCCDeveloperの問題の気がしてきました。 レスどうもでした。
3 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:29:47 ] >>1 乙! 何をしたら動かなくなったのかが知りたいな。 できればfopenとかの戻り値をチェックして欲しい。 ってか、ローカル変数でかいYO!って落ちじゃないよな?
4 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:45:20 ] >>987 Rs,Hn,Odds,Poll,Poll_S,Poll_T を、まずmallocで確保しようぜ? それでダメだったらまた来いよ。
5 名前:デフォルトの名無しさん mailto:age [2007/08/06(月) 23:54:22 ] www.freewebs.com/photoradio/?1/360788
6 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 00:00:50 ] >>前スレ986 > 従って、ヌルポインタはprintf()の引数として処理できない。 できるよ。 printf("%p\n", (void*)0);
7 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 00:38:42 ] printf("%p\n", NULL);
8 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 00:46:05 ] >>7 それ、らめぇ
9 名前:デフォルトの名無しさん [2007/08/07(火) 00:51:41 ] NULL で思い出したんだけども C++ って NULL よりも 0 を使う方がいいの?
10 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 01:04:50 ] >>9 どちらとも言えない。 NULL 使うんなら対応するヘッダのインクルードを忘れずに。 あとは↓を見て自分なりの答えをどうぞ。 www.kouno.jp/home/c_faq/c5.html
11 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:21:49 ] >>9 C++ では NULL は 0 と定義されているとは限らない。処理系定義。 だから、NULL と書いておけば、処理系によっては int n = NULL; と書いた時にエラーか警告を出してくれるかもしれない。
12 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:29:11 ] >>9 好みの問題だから、どっちでもいいよ。
13 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 02:49:37 ] >>11 エラーは出せない。
14 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:29:10 ] >>11 C でも同じだろ。
15 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:38:15 ] >>14 C は 0 か ((void*)0) だっしょ。 C++ は完全に処理系定義だったはず。 C99 で変わってたら知らんが。
16 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 03:52:07 ] あんまり仕様の隙間を縫うような考え方はしない方がいいよ
17 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 05:10:27 ] まーたNULLの話題かw
18 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:21:45 ] ポインタのみに適合するNULLをテンプレートで実装してみたけどどうよ、 って話を何年か前に見た記憶があるんだけど、どこで見たんだか思い出せない
19 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:42:53 ] ポインタのみに適合するNULLをテンプレートで実装してみたけどどうよ、 って話を何日か前に見た記憶があるんだけど、どこで見たんだか思い出せる
20 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 07:53:17 ] >>15 とりあえず、 C99 では処理系定義。
21 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 10:57:05 ] 教えていただきたいことがあるのですが BCC32にて、ユニットテストを行うコンソールアプリを製作してるのですが 下記のように関数[AssertEqueal]が呼ばれてた場合、 [AssertEqueal]内でソースファイル内での行数を取得することは可能なのでしょうか? 可能ならばその方法を教えていただきたいのですが void main() { AssertEqueal( a , b ); }
22 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:10:59 ] __LINE__を使うとか
23 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 11:12:26 ] つ __LINE__ AssertEquealはマクロ関数で実装して。
24 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 12:13:37 ] >>22 ,23 ありがとうございます、無事実装できましたー
25 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 16:12:31 ] この調子だと __FILE__ も使ってなかったりしないよな。
26 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 16:25:03 ] なんすかそれ
27 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 16:32:41 ] __FILE__ と __LINE__ はセットだろー ついでに文字列化演算子 # もな
28 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 16:44:14 ] そんなんあるんですか
29 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 16:56:31 ] つか、この分だと普通にassert()を知らないんじゃないか
30 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:17:36 ] assert知ってるけど使ってない 便利なもん?
31 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:29:21 ] それは知ってるって言わない
32 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:36:19 ] assert知らないけど使ってる 何するもん?
33 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:46:47 ] ちょっと自信ないから調べてきた つまりは assert( 条件 ) って風に書いて、この条件がfalseになったらそこで止めてくれるってことでよろしい? でもリリースにするとどうなるの?勝手に何かに置き換わってくれる?
34 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 17:56:24 ] そんなん#ifdef _DEBUGとかでくるめばよかろう
35 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:01:18 ] assert は NDEBUG が #define されてるかどうかで中身が変わる。 NDEBUG が #define されていると assert は何もしない。 NDEBUG が #define されてなければ、条件が false だったら abort する。
36 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:02:07 ] 横からサンクス
37 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:04:15 ] >>35 どうもありがとう
38 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:18:53 ] みんな、マニュアル読もうな
39 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:26:28 ] お前が一番読め
40 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:34:51 ] abort()ってUnixとかだとコアダンプを吐いて終了するのが普通だけど Win+IDEとかで開発してるとデバッガが起動してくれたほうが何かと便利なので、 abort()ってあんま便利じゃない希ガス my_abort() { char **nullpo = 0; *nullpo = "ガッ"; } みたいなの作って、強引にSEGV起こしてデバッガ起動させたほうが便利かも 例外も、スローされた場所が分からないという意味では、微妙に役に立たない 面があるよね、C++だと
41 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:44:34 ] >40 マクロで__FILE__と__LINE__を引数に取る例外クラスを作ればいいかと思う。 前に適当に作ったんだけど実際に使ったことがないので使い勝手はなんともいえん JavaのprintStackTraceみたいのがあればいいけどね
42 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 18:58:12 ] >>40 Visual Studioだと、assertも引っかかったときや 例外が投げられた時点でデバッガに移れるぞ。 スタックの状態はassertやthrow式の時点のものが見れる。
43 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 19:26:30 ] >>41 スタックトレース見れるとそうでないとでは随分違うよね。 >>42 ああ、そうだっけか。なら、同じかな。 SEGVだとデバッガがインストールされていない場合でもDr.ワトソン経由で コアダンプが吐かれるのがいいかなとも思うけど。
44 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 19:34:57 ] >>41 struct pos_info { const char* file; int line; pos_info(const char* file, int line) : file(file), line(line) { } }; #define POS_INFO pos_info(__FILE__, __LINE__) こいつを引数にとるとか。
45 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 19:51:12 ] gccだとバックトレース取れるみたいだな ttp://0xcc.net/blog/archives/000067.html 移植性も糞もないがw
46 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:52:56 ] すれ違いかもしれませんが、行数の多いものをコンパイルすると一定以上の上部行数が 表示されないんですが、表示させる設定はあるのでしょうか?
47 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:54:46 ] 意味がわからないが、moreをパイプとか
48 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 20:55:33 ] 一定以上の上部行数って何のよ。エラーメッセージ? 環境は?
49 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:07:53 ] 環境はwindowsXPでCPadとLSI C-86を使っています。 各ソートの詳細な動きを見たいんですが、エラーではないと思いますが 下のソースを実行すると0123485679から上が表示されないんです。 説明が下手ですいません。
50 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:09:31 ] printf("%d",rand())
51 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:09:33 ] このぺーじのを参考にしています。 ttp://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.html
52 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:10:48 ] そのぺーじは参考にしてはいけません。
53 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:13:10 ] つーか今時LSI C-86か VS2005 Expressとかがタダで使える時代に
54 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:24:55 ] 原始人なんですいません
55 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 21:55:51 ] そこのソース酷いなww 何言ってるのか分からんが、ShowDataのところを以下に書き換えたらどうだ void ShowData(int x[ ], int n) { int i; for (i = 0; i < n ; i++) printf("%d ", x[i]); putchar('\n'); }
56 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:21:51 ] 携帯から失礼します。 C言語の話なのですが同じ型の 二つの構造体をビット演算子で 比較することは不可能なのでしょうか。 職場でさっきやってみたら コンパイルエラー。。。
57 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:27:15 ] 別にwindowsでもバックトレースは取れるべ www.codeguru.com/cpp/w-p/system/threading/article.php/c10317/
58 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:28:19 ] ビット演算子で比較って何よ。 ビット演算子は比較するためのものではありません
59 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:34:16 ] なんだか、intならビット演算で比較ができるとでもいいたそうな56だなー #そりゃ、算術演算も究極的にはビット演算だけどさ
60 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:39:59 ] アセンブリ言語的には TEST 命令があるから ビット演算で比較というのもナシではないけどね。
61 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 22:46:35 ] >>46 LSI C-86は使ったことも無くESPしてみるけど、DOSコンパイルなの? 表示行が多くて、始めに出力した内容がDOS窓を上にスクロールしてもみえません。とか?
62 名前:56 mailto:sage [2007/08/07(火) 23:29:26 ] 家についた>>56 です。 少しスレを荒れさせてしまったようで申し訳ありません。 struct point { int a; int b; ・ ・ ・ int z; }; 思想としては上記のような型の2つの変数があった場合 メンバa同士で論理積(AND)演算を行う メンバb同士を論理積(AND)演算を行う ・ ・ ・ メンバz同士を論理積(AND)演算を行う という処理が冗長な感じがして 全く同じ構造体の型=全く同じビットパターンでは無いか? ならば丸ごと論理積(AND)演算は実行できないだろうか? と思った次第でございます。
63 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:32:35 ] 地道に1個ずつやるしかない。
64 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:35:31 ] >>62 もしint aとかが1ビットしか使っていなければビットフィールドを使う手もある。 とはいっても、量によっては結局何行か必要になるわけだが・・・
65 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:36:39 ] void memand(void *a, const void *b, size_t n) { char *pa = a; const char *pb = b; size_t i; for (i = 0; i < n; i++) { *pa++ &= *pb++; } } みたいなのを作って使うとか。
66 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:52:05 ] それでいいならmemcmpでいいだろ。 でも構造体にはパディングが入る可能性があるので 規格上は動作が保証されない。 やっぱメンバごとに比較するのがよいと思われ。
67 名前:デフォルトの名無しさん mailto:sage [2007/08/07(火) 23:54:46 ] 論理積? &&の方?、 left.a && left.aと left.b && left.bと ... それぞれの関係がわからない・・・ a-zまでをさらにまた&&で結合させるの?
68 名前:56 mailto:sage [2007/08/08(水) 00:15:37 ] 56です。 >>67 さん 論理積と書いてしまって混乱させてしまったようですが ビットAND演算子(&)を想定しています。 構造体Aのメンバa-zは フラグ(0x01 or 0x00)として意味を持ち それに大して構造体Bで用意したメンバa-z(0x01 or 0x00) を各メンバ同士ビットAND演算子(&)で演算を行って フラグを残したり、落としたりという処理をしたかったりしてました。
69 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:19:07 ] 一つの変数に複数のフラグを持たせるか、そういう関数作るが一番いいと思う。
70 名前:56 mailto:sage [2007/08/08(水) 00:20:19 ] 56です。 思えば同じ型の構造体でも丸ごと代入は許されていない ことを考えれば丸ごとビット演算もちょっと無理な話であることは 少々考えればわかることでした。。。 アドバイスくださった皆様どうもありがとうございました /平伏
71 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:23:55 ] bitset.hのような話?
72 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:31:10 ] >>70 >思えば同じ型の構造体でも丸ごと代入は許されていない 普通にできるけど。 -- struct {int a; int b;} a = {1, 2}, b; b = a;
73 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 00:31:35 ] >>70 構造体丸ごとの代入は許されてるよん。 代入しか許されてないけど。
74 名前:56 mailto:sage [2007/08/08(水) 00:44:30 ] 構造体丸ごとの代入 →ググッたら普通に出てきた。。。 無知で申し訳ないです
75 名前:デフォルトの名無しさん [2007/08/08(水) 05:24:03 ] while (str != null) { hoge ) みたいな関数についてなんですが、 なんでstr != nullで動くんですか? 文字列の終わりはnullじゃなくて、¥0じゃないんですか? nullは無効なメモリアドレスで、 ¥0とは違う意味じゃないんですか?
76 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 05:37:27 ] 違う意味だね。 だから、文字列の終わりを判定するコードじゃないんだろう。
77 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 05:45:48 ] >>75 strは文字配列へのポインタで、 まさにstrが無効なメモリアドレスでない間ループを回すコードじゃないのか? strの型を確認してみるんだ。
78 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 07:07:03 ] もし #define null '\0' であれば、件のコードは while (*str != null) {...} のはずなので、ほぼ間違いなく「正しいコード」だろう。 ただ、nullではなくNULLだろうな。
79 名前:デフォルトの名無しさん [2007/08/08(水) 08:34:24 ] >>76 >>77 >>78 わかりました!
80 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 09:04:05 ] 在宅アルバイトならチャットレディがオススメ。 はっきり言ってこんなに楽で自由で高収入のアルバイトは ありません。私も経験者ですので自信があります。 下記のサイトに詳しく説明してあります。 www2.atpages.jp/nicl1216/
81 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 09:28:53 ] 36歳独身男性でも応募できますか?
82 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 10:33:24 ] 86歳♀ですが応募できますか?
83 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 10:48:59 ] 21歳独身男性結婚する気なしでも応募できますか?
84 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 13:25:12 ] >>81 見た目と声がレディなら、アソコはどうなっていても構いません。 >>82 86歳はルックスの面で少し厳しいと思いますが、 熟女の魅力と魅力的な声があれば大丈夫かと思います。 >>83 年は関係ありませんし、結婚願望はない方が好ましいですね。 ただし、見た目と声は(´∀`*)でないとダメです。
85 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 13:25:38 ] 3チャイです。キリンさんが好きです、でもゾウさんの方がもぉっと好きで〜す♪
86 名前:DEFORTの名無し [2007/08/08(水) 20:27:50 ] ちょっと質問したいんだがどこかのサイトに無料のCのコンパイラないかな 知っている人がいたら教えて♪
87 名前:DEFORTの名無し [2007/08/08(水) 20:30:16 ] これはスレちがい?
88 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 20:32:36 ] MinGWとかVisualC++2005ExpressEditionとか
89 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 20:49:29 ] gcc
90 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 20:51:20 ] OSくらい書こうや WindowsXP?
91 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 21:05:57 ] >>86-87 あほすぎで笑うとこですよね?
92 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 21:14:13 ] DEFORT じゃなくて DEFAULT だよな
93 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 21:17:27 ] W
94 名前:デフォルトの名無しさん [2007/08/08(水) 23:24:39 ] いくつかのC言語の初心者向けの書籍をいくつか読んで気になった事があるのですが、 %d や %s などの呼び方が書籍によって「変換指定子」や「変換仕様」と違い、 どんな条件で変わっているのか調べても判らず困っています。 これはどちらか間違っているのでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:29:51 ] 「変換指定子」は d とか s とか変換方式を表す文字のみを指す。 「変換仕様」や「変換指定」は % で始まり「変換指定子」で終わる全体を表す。
96 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:34:13 ] >>94 あなたが間違っています。
97 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:35:23 ] OS:RHEL4 言語:C やりたいこと: #include <openssl/sha.h> unsigned char *SHA1(const unsigned char *d, unsigned long n, unsigned char *md); こいつを使いたい。 これって、.soに定義されてないの?/usr/lib/libssl.aにしかない? EVP_xxxを使うべきなのか。。。
98 名前:94 mailto:sage [2007/08/08(水) 23:41:28 ] >>95 ありがとうございます、助かります。
99 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:48:46 ] >>97 www.ipa.go.jp/security/rfc/RFC3174JA.html
100 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:54:48 ] >>99 情報アリガト。 でも、これってRFCで示されたSHA1の実装例ですよね? RHEL4の標準ライブラリで実現できないかなーと思っているのです。 opensslコマンドや、sha1sumコマンドで実現できるのは分かっているのですが、 自プロセス内で、標準(?)関数を使ってSHA1のハッシュ値を得たいのです。 ワガママですみません。
101 名前:97 mailto:sage [2007/08/08(水) 23:57:40 ] 追記。 libssl.aをリンクすれば良いのですが、 libgnutils-openssl.soとかあるので、共有ライブラリで何とかならんのかなーと。