- 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
- 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とかあるので、共有ライブラリで何とかならんのかなーと。
- 102 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:03:41 ]
- わざわざ面倒なことしてライブラリ使わんでも、それコピって使えばいいと思うが・・・
こだわる理由がわからん。
- 103 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:04:36 ]
- ソースがでかくなるのやじゃないですか?
- 104 名前:デフォルトの名無しさん [2007/08/09(木) 00:06:30 ]
- sha.h みつけた
mist.suenaga.cse.nagoya-u.ac.jp/document/sha_8h-source.html
- 105 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:08:29 ]
- >>104
C++っすね。。。 ちなみに、偉大なるgoogle先生によると www.google.co.jp/codesearch?q=package%3Asha1&hl=ja この辺が出てくるのですが。。
- 106 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:10:05 ]
- >>103
1個のファイルに全プログラムを書いてるとか?
- 107 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:18:55 ]
- >>106
いえいえ。 もし既に標準ライブラリとしてRHEL4で提供しているのであれば、それを使った方が良いと思ってるのです。 javaでもメッセージダイジェストのクラスjava.security.MessageDigestがありますし。 できれば標準で提供されているものに乗っかりたいかなと。 Cとjavaではそもそも思想が違うと言われたらそうかも知れませんが。。。
- 108 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:23:16 ]
- 変態!変態!変態!!
- 109 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:30:48 ]
- >>108
そう?
- 110 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:33:06 ]
- すみません、どなたか教えて頂けないでしょうか。
C言語で、以下のものを作成したのですが、 int *name[] = { "satou", "takahashi", "suzuki", }; この時に*name[]に入った配列の数を知るにはどうしたら良いでしょうか。 (上記の場合、自分では「それぞれの文字列の先頭のポインタが3つ入っている」という認識です)
- 111 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:33:42 ]
- sizeof name / sizeof name[0]
- 112 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:37:03 ]
- >>111
配列の数を知る事が出来ました。 ありがとうございます。
- 113 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:38:10 ]
- えっと、なぜint *?
char * name[] = { "hoge", "hogehoge", "hogehogehoge" }; sizeof ( name ) / sizeof ( char * )で3が得られる。
- 114 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:38:47 ]
- int *の配列なのが気になるが・・・
char *じゃ無くて? [mona@fedora7 tmp]$ cat test.c #include <stdio.h> int main(int argc, char **argv){ int *name[] = { "satou", "takahashi", "suzuki", }; printf("%d\n", sizeof(name) / sizeof(int *)); return 0; } [mona@fedora7 tmp]$ gcc test.c [mona@fedora7 tmp]$ ./a.out 3
- 115 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:39:46 ]
- みんな、簡単な問題だと思って、レスが早いよ!!
- 116 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:41:55 ]
- 別スレに来たのかとおもた
- 117 名前:110です mailto:sage [2007/08/09(木) 00:47:09 ]
- 自分の認識ではname[]へは、
[satouへのポインタ] [takahashiへのポインタ] [suzukiへのポインタ] … でしたので、数が増えた場合の事を考えて、 int型で宣言した方が良いと思い、 int型で宣言しました。 この辺りが曖昧でして。申し訳ありません。
- 118 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:50:06 ]
- 皆様突っ込みどうぞ
- 119 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:52:05 ]
- >>117
数がいくら増えようが、char *もint *も必要とするメモリは変わりない。 ってか、name[]に256を超えるポインタを格納することを考えてintにしたのか? だとしたら激しく勘違いしているぞ。
- 120 名前:100です mailto:sage [2007/08/09(木) 00:54:21 ]
- すみません、ソース見てみたらchar型で宣言してました。
int型に変更してコンパイルしてみたところ 大量のwarningが出ました。 (エラー内容:warning initialization incompatible pointer type) お騒がせして申し訳ありません。
- 121 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:56:05 ]
- >>117
ポインタが指し示す値の型がintならint*を使うしcharならchar*を使う 指し示した先の型が表せる値の範囲は違ってもポインタ自体のサイズはint*でもchar*でも同じ
- 122 名前:110です。 mailto:sage [2007/08/09(木) 00:58:30 ]
- ↑すみません>>120 = >>110です。
char型の配列を、 name[] ={...}内に入っている分を確保するという事で良いでしょうか。
- 123 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 00:59:34 ]
- "satoru"
は、文字列リテラルと呼ばれるものです。環境にもよりますが、 書き込み不可のメモリ領域に確保されます。 で、これはchar型の配列、末尾が'\0'として表現されています。 なので、 char *name[] = {"satoru", "takahashi"."suzuki"}; の意味は、 1.書き込み不可領域に確保されている"satoru"、"takahashi"、"suzuki"の3つの文字列リテラルがある。 2.要素数3、でchar型へのポインタの配列(name)がスタック(?)に確保され、各ポインタは、 1.の"satoru"、"takahashi"、"suzuki"それぞれの先頭の一文字のアドレスを指すように初期化される です。 117はCにおける文字列の表現方法について基本が分かっていません。がんばってちょ。 基本を理解するのは意外と難しいです。
- 124 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 01:01:07 ]
- 違う。char *を{...}の中にある要素数だけ配列として確保する。
だから、下の二つはnameで確保するメモリは同じ。 char * name[] = { "a", "b" }; char * name[] = { "aaaaaaaaaa", "bbbbbbbbbb" };
- 125 名前:110です mailto:sage [2007/08/09(木) 01:15:45 ]
- 皆様へ
丁寧なご説明ありがとうございます。 ずっとこの部分でエラーを吐いていて、 うまく動かず悩んでいたのですが、やっと動きました。 どうしてエラーが出ていたのかも理解できました(と思います…)。 ありがとうございました。
- 126 名前:46 mailto:sage [2007/08/09(木) 04:02:22 ]
- >>61書き込みを遅くなりまして申し訳ありませんでした。
>>始めに出力した内容がDOS窓を上にスクロールしてもみえません。とか? そのとおりです。何か対処法がありましたらぜひ教えてくださいよろしくお願いします。
- 127 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 04:06:27 ]
- どんだけ〜
- 128 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 07:55:37 ]
- >>126
所謂DOS窓を縦に引き伸ばしてみては如何でしょうか。 或いは、リダイレクトでファイルに落としてエディタで見るとか、 パイプラインでmoreに繋いで見るとか。 って、どう見ても言語ネタじゃないね。
- 129 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 11:02:45 ]
- >>97
うちのUbuntu系のLinuxには /usr/lib/libssl.so があるんだぜ。
- 130 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 11:34:48 ]
- >>126
ワロタwwプログラミング以前の問題だなw
- 131 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 13:18:07 ]
- 左上のアイコン右クリック>規定値>レイアウト>画面バッファのサイズ>高さ を増やすとか
- 132 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 13:22:16 ]
- >>126
出力をテキストファイルにリダイレクトするとか bcc32 -Etest.txt test.cpp > result.txt
- 133 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 16:49:44 ]
- ファイル入出力で質問です。
ファイル保存のダイアログを出して、適当なところに保存して また別にfopen("test.txt", "w"); で保存すると、保存ダイアログが出てたフォルダに保存されてしまうのですが これを、実行ファイルと同じフォルダに保存するようにしたいんですけど どうすればいいでしょうか?
- 134 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:13:51 ]
- カレントディレクトリを実行ファイルのあるディレクトリにすればいいんじゃないの?
- 135 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:20:44 ]
- >>133
つまりユーザはダイアログで保存ディレクトリも含めて保存先を指定したのに それを*無視*して実行ファイルと同じディレクトリに*無理やり*保存したい ってこと? ユーザ権限について調べてみるといいと思うよ Unixは言うに及ばず、WindowsであってもVistaでは厳しくなったようだから
- 136 名前:135 mailto:sage [2007/08/09(木) 17:24:09 ]
- ああ、
> また別にfopen("test.txt", "w"); > で保存すると、 と書いてあるから、ユーザに指定させたのとは無関係に、プログラムが 勝手にこしらえるファイルの話か? だったら、自分で実行ファイルのディレクトリを取得して、 フルパスで指定汁。カレントがどこだか分からないのだから。 とは言え、パーミッションには注意。Unixならもともとそういう設計は論外な。
- 137 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:27:59 ]
- >>134
>>135 アドバイスありがとうございます。 ダイアログで保存するものと、fopenで保存するものは別のものなんです。 ただダイアログを出さないで保存したいなと思いまして。 ただ単に、fopenのみのプログラムだと実行ファイルのところに保存できたのですが ダイアログ→fopen の順序で実行したらダイアログで保存したフォルダに一緒に保存されてしまったんです。 カレントディレクトリを実行ファイルのあるディレクトリにすればいいとは思ったんですけど やり方がわかりませんでした。
- 138 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:29:46 ]
- GetModuleFileName()でexeのファイル名を取れ
- 139 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:31:32 ]
- >>133
OFN_NOCHANGEDIR
- 140 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:32:31 ]
- int main(int argc, char *argv[])
ってやると、argv[0]に実行ファイル名が入るよ
- 141 名前:デフォルトの名無しさん mailto:sage [2007/08/09(木) 17:37:02 ]
- >>140
この場合、そのことに何の意味が? まさか、argv[0]に必ずフルパスが入っているなんて能天気なことを想像してたりしませんよね?
|

|