トップページ⇒tech
1001コメント317KB

【初心者歓迎】C/C++室 Ver.19【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/06/26(日) 22:45:25
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
http://pc8.2ch.net/test/read.cgi/tech/1117984322/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0002デフォルトの名無しさん2005/06/26(日) 22:47:17
STLつかうと一気に実行ファイルサイズが10倍に?!
0003デフォルトの名無しさん2005/06/26(日) 22:49:08
フーン
00044summer2005/06/26(日) 23:04:46
 夏夏夏夏
0005デフォルトの名無しさん2005/06/26(日) 23:07:34
C言語で「夏」を表現してください。
腕の見せ所です。
よろしくお願いします。
0006デフォルトの名無しさん2005/06/26(日) 23:10:12
printf("前橋 : 35.4 ℃");
0007デフォルトの名無しさん2005/06/26(日) 23:10:26
断る
0008デフォルトの名無しさん2005/06/26(日) 23:13:43
#include <stdio.h>
int main(void) {putchar(0x89), putchar(0xC4); return 0;}
0009デフォルトの名無しさん2005/06/26(日) 23:15:25
>1乙

            , -'"´  ̄`丶、_
           ,.∩         `ヽ
         〃∪'´ ̄`二二人\  ヽ
         | ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ',
         |ハ ,ニ、   ,. - 、 | | | l |
         | ハ ィハ     ,二ヽ. | | | | |
         | | | じ'   |トJ〉  /)} l |
         | ハ  、'_,   ̄,, 厶イ川|
         l l /\    .. イV\川 |
         ,' l l ,イ `l ̄´ /   /ヽl l
         l | l ハ  `メ、    〃  ヽヽ、__ノ
         l  ∨ └‐イ「ト--ァ'´     ハヽ__ノ
         ヽ/  }  l」」 /     / }`ー
          〈_n| 八   / /     /ノ
          〈二二人 c /\/ / , イ
           /  /厂 /\__>< {_


0010デフォルトの名無しさん2005/06/26(日) 23:17:15
>>9
これ、何のキャラ?
0011デフォルトの名無しさん2005/06/26(日) 23:36:39
この不敬ものめ!
秋篠宮佳子さまにあらせられるぞ
アニメエロゲのキャラではないわ

ゆめゆめおかずにしてはならぬぞ
0012デフォルトの名無しさん2005/06/26(日) 23:36:56
プリキュア?
0013デフォルトの名無しさん2005/06/26(日) 23:37:42
#include <stdio.h>
#include <stdlib.h>
#define FILENAME"natsu.url"
int main(void)
{
FILE *fp;
fp = fopen(FILENAME, "w");
fprintf(fp, "[InternetShortcut]\nURL=http://poo-chan.com/archives/photo/2004_07_07_tanabata-thumb.jpg\n");
fclose(fp);
system(FILENAME);
return 0;
}
0014前スレ9702005/06/26(日) 23:43:36
想定外の突っ込みが入ったので、流れをまとめてみた。※は漏れコメント

http://pc8.2ch.net/test/read.cgi/tech/1117984322/943
問題提起:union HOGE { char ch[sizeof(int)]; int i; };じゃなくて大丈夫なの?
※>954 からビット幅合わせる必要があるという意味だと解釈

http://pc8.2ch.net/test/read.cgi/tech/1117984322/954
>943 に突っ込み:unionが何なのか知らんだろオマエ

http://pc8.2ch.net/test/read.cgi/tech/1117984322/956
>954 に反論:知ってるからこそビット幅合わせないで一体どんな目的に使うのか謎なんだけど

http://pc8.2ch.net/test/read.cgi/tech/1117984322/958
>956 に再突っ込み:char と int を重ねるってだけでも十分意味を成す場面があるだろう。
※ビット幅を合わせるパターンじゃなくてサイズを節約するパターンと解釈

http://pc8.2ch.net/test/read.cgi/tech/1117984322/959
>958 に再反論?:大抵うまくいくだろうが、一応規格外だ。
※ビット幅を合わせるパターンで配置が保証されない場合があるという指摘。流れとずれてる。

http://pc8.2ch.net/test/read.cgi/tech/1117984322/960
>959 に対する指摘:char と int を重ねたいだけの話には関係ないんじゃない?

http://pc8.2ch.net/test/read.cgi/tech/1117984322/970
漏れ:ビット幅を合わせるパターンじゃない例をあげる
※>943, >956 に対する指摘のつもり。>958 にレスしてるから >959 = >956 かと誤解。

http://pc8.2ch.net/test/read.cgi/tech/1117984322/975,976
漏れに対する突っ込み:それとchar c[sizeof(int)]と何の関係があるの?

漏れの結論:知らんがな。漏れが >959 に対してレスしたのが間違いで >943,>956 にするべきだった。
でも >959 が >958 にレスしたのも間違いで >943 にレスするべきだった。以上。
0015デフォルトの名無しさん2005/06/26(日) 23:44:54
×※>954 からビット幅合わせる必要があるという意味だと解釈
○※>956 からビット幅合わせる必要があるという意味だと解釈
0016デフォルトの名無しさん2005/06/26(日) 23:53:09
>>2
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0017デフォルトの名無しさん2005/06/27(月) 00:03:42
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0018デフォルトの名無しさん2005/06/27(月) 00:04:19
#include <stdafx.h>

後氏ね。
0019デフォルトの名無しさん2005/06/27(月) 00:04:20
ダイナミックリンクしといてサイズが変わらないとか言ってるよこの人。
0020デフォルトの名無しさん2005/06/27(月) 00:04:48
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0021デフォルトの名無しさん2005/06/27(月) 00:06:38
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
0022デフォルトの名無しさん2005/06/27(月) 00:07:12
息が合ってません
0023デフォルトの名無しさん2005/06/27(月) 00:07:26
何でここでそのテンプレが…
0024デフォルトの名無しさん2005/06/27(月) 00:38:54
なんか今日はカオスってないか?
0025デフォルトの名無しさん2005/06/27(月) 01:45:53
あと氏ね
0026デフォルトの名無しさん2005/06/27(月) 11:31:04
配列の要素数80万個って可能ですか?
0027デフォルトの名無しさん2005/06/27(月) 11:43:29
>>26
万個。まんこ。
0028デフォルトの名無しさん2005/06/27(月) 12:04:06
二元一次連立方程式
t+k=a
6t+4k=b
を解くのに以下のようにプログラムを組んだのですが、答えが0になってしまいます。
構文のエラーはないはずです。どこがいけないのでしょうか。
あと、文字の部分は気にしないでください。

#include <stdio.h>
main()
{
float a,b,t,k;
printf("合計は?");
scanf("%d",&a);
printf("足の数は?");
scanf("%d",&b);
t=(b-4*a)/2;
k=(6*a-b)/2;
printf("タガメの数= %d\n",t);
printf("カエルの数= %d\n",k);

}

0029デフォルトの名無しさん2005/06/27(月) 12:05:04
二元一次連立方程式
t+k=a
6t+4k=b
を解くのに以下のようにプログラムを組んだのですが、答えが0になってしまいます。
構文のエラーはないはずです。どこがいけないのでしょうか。
あと、文字の部分は気にしないでください。

#include <stdio.h>
main()
{
float a,b,t,k;
printf("合計は?");
scanf("%d",&a);
printf("足の数は?");
scanf("%d",&b);
t=(b-4*a)/2;
k=(6*a-b)/2;
printf("タガメの数= %d\n",t);
printf("カエルの数= %d\n",k);

}

003028,292005/06/27(月) 12:07:18
二重カキコすまそ
0031デフォルトの名無しさん2005/06/27(月) 12:49:40
scanf()とprintf()の中のフォーマット文字列の中の%dがまずいんじゃね?%fに変えてみて。
0032デフォルトの名無しさん2005/06/27(月) 12:59:39
t=(b-4*a)/2;
k=a-t;

じゃだめなのかorz
0033デフォルトの名無しさん2005/06/27(月) 13:09:24
すみません、他スレに書き込んだのですが反応ないので。
分散を計算してるんですけど、なぜこうなるのか良くわかりません。
解説お願いします
variance += (total[i] - (double)sum / N) * (total[i] - (double)sum / N);
いちよう書いておくとVisual C++ XPです。
0034デフォルトの名無しさん2005/06/27(月) 13:18:39
分散の定義が (平均からの差)の2乗 だから。
定義である以上、なぜは(ほとんど)許されない。
0035デフォルトの名無しさん2005/06/27(月) 13:25:17
二元一次連立方程式
t+k=a
6t+4k=b
を解くのに以下のようにプログラムを組んだのですが、答えが0になってしまいます。
構文のエラーはないはずです。どこがいけないのでしょうか。
あと、文字の部分は気にしないでください。

#include <stdio.h>
main()
{
float a,b,t,k;
printf("合計は?");
scanf("%d",&a);
printf("足の数は?");
scanf("%d",&b);
t=(b-4*a)/2;
k=(6*a-b)/2;
printf("タガメの数= %d\n",t);
printf("カエルの数= %d\n",k);

}
0036デフォルトの名無しさん2005/06/27(月) 14:09:13
>>35
t=(b-4*a)/2;
k=(6*a-b)/2;

のとこは、

t=(b-4*a)/(float)2;
k=(6*a-b)/(float)2;

にしないとダメだとおもうぞ。

0037デフォルトの名無しさん2005/06/27(月) 14:10:55
>>36
> (float)2

2.0で十分だろ。
0038デフォルトの名無しさん2005/06/27(月) 14:12:55
>>35
>printf("タガメの数= %d\n",t);
>printf("カエルの数= %d\n",k);

%dの意味を調べましょう。
0039デフォルトの名無しさん2005/06/27(月) 14:15:52
>>35は釣り?
a,bにどういう値を指定したらそうなるのか書いてない。
scanfの使い方も間違ってるし、printfも間違ってる。
0040デフォルトの名無しさん2005/06/27(月) 14:18:36
釣りか。 %dのことをを 全部 %f にしてやってみろ。
0041デフォルトの名無しさん2005/06/27(月) 14:19:15
>t=(b-4*a)/(float)2;
>k=(6*a-b)/(float)2;

精度の高い型に強制的にキャストされるんじゃ?
でないと、コンパイル時に桁落ちの警告が出るはず。
0042デフォルトの名無しさん2005/06/27(月) 14:41:06
>>35
ある意味、高度な問題だ。
二元一次方程式としては解は実数だが、
問題の解としては整数値に限定される。
ましてやその範囲はゼロもしくは正数。
その辺の吟味がまったくなされていない点で、
テストの点数としては零点に限りなく等しい。
0043デフォルトの名無しさん2005/06/27(月) 14:41:58
>>28>>29>>35
なぜ同じ問題を3回も書くんだ?
0044デフォルトの名無しさん2005/06/27(月) 14:42:07
足の数や匹数をfloatとしている時点で(ry
0045デフォルトの名無しさん2005/06/27(月) 15:10:51
今時のタガメとカエルはそういう足の数なんだよ。
0046デフォルトの名無しさん2005/06/27(月) 15:19:34
4.5本足の蛙。
0047デフォルトの名無しさん2005/06/27(月) 15:54:47
ちなみにオレは、よく3本足と間違えられるくらいすごい。









という夢を見ますた。
004828,29,352005/06/27(月) 16:01:15
つい最近習ったばかりでよくわからないんです。
答えて下さった方、ありがとうございました。
あとは、自分で解決するので、以下、スルーして下さい。
0049デフォルトの名無しさん2005/06/27(月) 16:12:44
これが有名なカエタガ算か・・・
0050デフォルトの名無しさん2005/06/27(月) 16:17:13
フルーツ型のポインタ A B があったとして、これらが本当は リンゴ型 と みかん型のインスタンスだった場合に
CreateMixJuice(Fruit* fruit0, Fruit* fruit1)
みたいな関数を読んだときに、本来の型に合わせたミックスジュースを作りたいときはどのように設計したらいいのでしょうか?
0051デフォルトの名無しさん2005/06/27(月) 16:50:49
>>50
> 関数を読んだときに

関数の何を読みたいのか?によるな。
0052デフォルトの名無しさん2005/06/27(月) 17:24:55
>>50
ミックスジュースとは何か を考える。
 ミックスジュース は、フルーツをつぶしてできた液体の集合である。
ミックスジュース型 は 液体(群) を暗に擁し その生成には フルーツ(群) を必要とする。

フルーツから液体を精製する方法は、フルーツに委ねられるべきだろう。
しかしながら、作業の実態は個々に異なることを想定せねばなるまい。
 ⇒フルーツ型に virtual method つぶす

各種フルーツによって、具体的な作業を記述する
 りんご: method つぶす (実装は おろしがねでガリガリ)
 みかん: method つぶす (実装は 手でぐちゃっと)

ミックスジュースは、渡されたフルーツに対し つぶせ と命じるだけだ。

こんな答えで良いわけ?  ネタなら↓コレも参考になるのか?
 http://pc8.2ch.net/test/read.cgi/tech/1090816011/
0053デフォルトの名無しさん2005/06/27(月) 17:49:08
>⇒フルーツ型に virtual method つぶす

やはりそうなりますか。
つぶす関数を二回呼んで、それぞれの呼び出しの戻り値(液体構造体?)から
ミックスジュースを作る、と。

できれば、Fruit::Mix(Fruit* other)みたいな仮想関数をよういして、
本来の型に合わせたMix関数が呼ばれて、引数のFruit*もついでにオーバーライド?してくれるような
方法が知りたかったのですが・・・
0054デフォルトの名無しさん2005/06/27(月) 18:17:37
>>53
もう少し設計対象を解析したほうが良いかもね。

class フルーツ { virtual Mix() = 0; }
class りんご : public フルーツ { Mix(); }

りんご anApple;
フルーツ* someFruit = &anApple;
someFruit->Mix(); // ←これで 本来の型に合わせたMix関数が呼ばれるわな。

> 引数のFruit*もついでにオーバーライド?してくれるような
> 方法が知りたかったのですが・・・
趣旨不明。
Mix という行為をするために 引数のFruit から情報を必要とするのなら
フルーツ型に情報取得関数が必要なだけ。(仮想関数かもしれないし、実関数かもしれない
ex) virtaul フルーツ::混ぜるための情報くれ

あと、Mix という行いはフルーツがするべきなのかも検討しといたほうが良いと思われ
※ 混ぜ合わせの結果が元のフルーツに属すべきかどうかとかね。

って設計にまつわるスレは、ココでも良いんかね? (C++ 含むけどさ…
0055デフォルトの名無しさん2005/06/27(月) 18:30:32
>>50
ダブルディスパッチ
0056デフォルトの名無しさん2005/06/27(月) 18:36:47
このスレいいなぁ。
0057デフォルトの名無しさん2005/06/27(月) 18:46:59
>>54 >>55
レスありがとうございました、もう少し検討してみます。
ダブルディスパッチというのも調べてみます<(_ _)>
0058デフォルトの名無しさん2005/06/27(月) 18:59:20
他スレで相手にされなかったみたいなので...orz

やっぱりC++使う以上は、継承とかバリバリ使えないといけないのでしょうか。
ウィンドウズでVisualC++とか使っている範囲では、
殆どそんなテクニックは意識したことが無いのです。
0059デフォルトの名無しさん2005/06/27(月) 19:08:27
使えんより使えたがいい罠
0060デフォルトの名無しさん2005/06/27(月) 19:17:26
所詮道具なんだから、無理せず自分にあった服を着る考え方で良いんでない?

継承が使える ってのと うまく継承を使って区分けできてる ってのとは微妙に違うからねぇ…
使えたほうが良いといえるのは、使えるようになった時だしな。
0061デフォルトの名無しさん2005/06/27(月) 20:06:02
#include <iostream>
#include <string>
using namespace std;
class storage
{
public:
string* s;
int s_num;
//public:
storage()
{
s_num = 2;
s = new(string)[s_num];
s[0] = "cat";
s[1] = "dog";
}
~storage()
{
delete [] s;
}
void show()
{
for( int i = 0; i < s_num; i++ )
cout<<s[i]<<endl;
}
};
int main(int agrc, char** agrv)
{
storage A;
A.show();
}
をVC++.NETでコンパイルするとエラーが出てしまいます。gccだと普通にコンパイルできるのですが。
0062612005/06/27(月) 20:08:28
error C2143: 構文エラー : ';' が '[' の前にありません。
error C2337: 's_num' : アトリビュートが見つかりません。ビルトインまたは、現在の名前空間でアクセスできるカスタム属性ではありません。
ですよろしくお願いします。
0063デフォルトの名無しさん2005/06/27(月) 20:12:57
>>61
new(string)[s_num] → new string[s_num]

括弧で囲ったら、newの配置構文(placement new)になってしまい、
意味が全然違う。
0064デフォルトの名無しさん2005/06/27(月) 20:22:54
>>48
前スレに鶴亀算と連立方程式あるよ。

【初心者歓迎】C/C++室 vol.18
http://pc8.2ch.net/test/read.cgi/tech/1117984322/584-619
0065デフォルトの名無しさん2005/06/27(月) 20:47:17
>>50
変なアナロジーを持ち出すとよけいな混乱を誘うという好例。
それとも本当にミックスジュースをつくりたいのか?
0066612005/06/27(月) 20:57:45
>>3
なるほど、ありがとうございます。
0067デフォルトの名無しさん2005/06/27(月) 22:15:21
素朴な疑問なんですが、

拡張子を".h"ではなく、".hpp"にする時はどういう時なんでしょうか?
C++のクラスファイルか何かでしょうか?

あと、よく関数とか構造体で、_func()や、struct _st { ... };
と、アンダーバーがついてるものがありますが、これらはどういう基準で付けるものなんでしょうか?
0068デフォルトの名無しさん2005/06/27(月) 22:20:58
>>67
hppにするのは各自のコーディングスタイルの問題。好きにしろ。
アンダーバーで始まる名前は処理系用に予約されたもの。自分がアンダーバーで始まる名前を使ってはいけない。
0069デフォルトの名無しさん2005/06/27(月) 22:27:51
>>68
じゃあ
ttp://gamdev.org/up/img/2224.zip
こういうのは基本的にはアウトなんでしょうか?
0070デフォルトの名無しさん2005/06/27(月) 23:11:30
>>69
基本的にでもなくアウト
0071デフォルトの名無しさん2005/06/27(月) 23:13:03
>>69
中間ファイルをそのままアップロードしている辺りがダメダメ。
0072デフォルトの名無しさん2005/06/27(月) 23:23:55
SDKで

ディスクのビットマップを表示したいのですが、
なぜか白黒で表示されます。なんでなんでしょうか?

CreateCompatibleDC
SelectObject
BitBlt
を使っています
0073デフォルトの名無しさん2005/06/27(月) 23:25:10
>>72
ビットマップが白黒だから
0074デフォルトの名無しさん2005/06/27(月) 23:25:40
>>68>>70>>71
ありがとうございました。勉強になしました。
0075デフォルトの名無しさん2005/06/27(月) 23:31:02
ガッ
0076デフォルトの名無しさん2005/06/28(火) 00:49:42
#include <stdio.h>
#include <stdlib.h>

int main(void) {

int i;
char *buf;

buf = (char *)calloc(16, sizeof(char));

for (i = 0; i < 10; i++) {
*buf = 'A';
buf++;
}

printf("%s", buf);

return 0;
}


このコードでAが10個出力されるのを期待してたんですが、
何故か出力されません。なんででしょうか?

ポップアップ用: >>76
0077デフォルトの名無しさん2005/06/28(火) 00:52:38
>>76
bufを移動させてるからな。printfに渡したときには文字列のケツを指してる。

callocで確保した領域を保存する別のポインタを用意しておいて
それをprintfに渡せ
0078762005/06/28(火) 00:56:29
>>77
あっ・・本当ですね・・
こんな些細な事に気づかなかったなんて・・
本当にありがとうございました
0079デフォルトの名無しさん2005/06/28(火) 01:46:36
あるいは、ループカウンタ使ってるなら

for (i = 0; i < 10; i++) {
*buf = 'A';
buf++;
}

じゃなくて

for(i = 0;i < 10;i++)
*(buf + i) = 'A'; //または素直にbuf[i] = 'A';

じゃ駄目なのか?

あるいはchar *ptrを付け加えて

for(ptr = buf;ptr - buf + 1< 10;ptr++)
*ptr = 'A';

でも良さそうだが。
0080デフォルトの名無しさん2005/06/28(火) 01:51:02
市民団体「活貧団」会員らが27日、ソウル駐在日本大使館の前で反日デモを起こしている。
この日デモ隊は、明仁日王が終戦60周年記念としてサイパンで第二次世界大戦戦犯慰霊祭
と新神社竣工式を開くことにしたことを責めた。

▽ソース:Yahoo!Koreaニュース
http://kr.news.yahoo.com/service/news/shellview2.htm?linkid=195&pid=wl&articleid=2005062714075517912&newssetid=87

▽写真:
http://img.news.yahoo.co.kr/picture/12/20050627/1220050627_17086702.jpg
0081デフォルトの名無しさん2005/06/28(火) 02:18:01
「デストラクタはオーバーライドしない」という記事を
ネットで見ました。
コンストラクタもオーバーライドしたら困ると思います。
継承の時、オーバーライドしない関数は
コンストラクタ&デストラクタのみ という
見方でよろしいでしょうか?
0082デフォルトの名無しさん2005/06/28(火) 02:20:34
>>81
デストラクタはオーバーライドします。
コンストラクタはオーバーライドできません。
継承の時、オーバーライドしない関数は、
オーバーライドする必要が無い関数です。
0083デフォルトの名無しさん2005/06/28(火) 02:20:58
>>81
その記事載せてるサイト晒せ。
0084デフォルトの名無しさん2005/06/28(火) 02:34:30
>>82
レスありがとうございました。
ということは、仮想関数にしないと
基本クラスのデストラクタは全く呼び出されないと...。
0085デフォルトの名無しさん2005/06/28(火) 02:34:33
>>76
printfに渡す前にbufの末尾を\0終端するのを忘れないように。
0086K2005/06/28(火) 02:39:46
pascalの宿題解いてくれませんか?
0087デフォルトの名無しさん2005/06/28(火) 02:55:05
>>86
いやです。
0088デフォルトの名無しさん2005/06/28(火) 03:18:36
>>84
違うよ。派生クラスのデストラクタが呼び出されない。
0089デフォルトの名無しさん2005/06/28(火) 07:00:26
C言語で、特定のキーを押しながら他のキーを押す、ということはできますか?
キー操作を行うオートパイロットソフトなんてものもあるみたいですが、
これを機にプログラムの勉強もできればと思ったのですが、
どこから手をつけてよいかさっぱりです。
0090デフォルトの名無しさん2005/06/28(火) 07:58:12
>>89
標準ではできないが、環境依存の部分で出来ることがある。
0091デフォルトの名無しさん2005/06/28(火) 08:16:23
ファイル内のある文字(例えばa)を数えるときに、

while(!cin.eof()) {
cin >> c;
if(c == 'a') { count++; }
}
と書くのと、
while(1) {
cin >> c;
if(c == EOF) { break; }
if(c == 'a') { count++; }
}
と書くのとでは結果が違いますが、これはどうしてでしょうか。
上でも良いような気がするのですが。

0092892005/06/28(火) 08:24:10
>>90
お返事ありがとうございます。
環境依存で、ということは例えばウィンドウズ依存になるけど、ということでしょうか?

>>1のアップローダーの、「スレッドを立てるまでもないソース」の85に
詳細をうpさせていただきました。
0093デフォルトの名無しさん2005/06/28(火) 08:28:54
>>91
結果は変わらないと思うけど。
ただ上のやつでは
if(c == 'a')
のところで c の値が EOF のときにも比較しちゃってるだけの話でもちろん false だし。

>>92
うpしたならそのファイルへのリンクを張るようにしましょう。
0094デフォルトの名無しさん2005/06/28(火) 09:08:17
>>89
> C言語で、特定のキーを押しながら他のキーを押す、ということはできますか?

Cで(物理的に)キーは押せないだろう。
0095デフォルトの名無しさん2005/06/28(火) 09:13:37
ヒント:AIBO
0096デフォルトの名無しさん2005/06/28(火) 09:15:25
>>94
まあまあ、それくらいの言葉使い許してやってくれw
0097デフォルトの名無しさん2005/06/28(火) 09:20:23
>>94
重箱の隅つついてたのしい?
0098デフォルトの名無しさん2005/06/28(火) 09:51:02
いや、漏れは>94じゃないが>89の言いたいことが判らん。
プログラムで特定のキーを押したことにしながらオペレータに他のキーを押させたいのか、
プログラムで特定のキーも他のキーも押したことにしたいのか、
それらをプログラムで検出したいのか、
>89を読んだだけで判るのか?
0099デフォルトの名無しさん2005/06/28(火) 10:10:36
>>98
Ctrl+CみたいにA+Bとかやりたいという意味だととったが。
0100デフォルトの名無しさん2005/06/28(火) 10:41:49
100
0101デフォルトの名無しさん2005/06/28(火) 10:56:18
質問です。
ツールを作っていて、まず起動直後に
GetCurrentDirectory
しているのですが、環境によって内容が違ってしまいます。

私のマシンだときちんと起動された場所が取得できるのですが、友人のマシンですと
C:\Documents and Settings\XXXXXX\
といった、ユーザーフォルダがカレントディレクトリとして取得されてしまうのです。
(ともにWindows2000です)

そういえば昔、私はこの問題に腹を立てて、Windowsの設定から「カレントディレクトリをユーザーフォルダにしない」設定をした覚えがあります。

これについて解決方法を探しているのですが、EXEパスを利用することを考えたのですが問題がありました。
別のツールから「カレントディレクトリを指定した上で呼び出される」という性質と「直接EXE起動される」という性質をあわせもつツールなのです。

プログラム側でこれを回避する方法はありませんでしょうか?
最も良いのは「EXEを直接呼び出したとき、ユーザーフォルダにはいかないようにする」なのですが。
■ このスレッドは過去ログ倉庫に格納されています