758 :
デフォルトの名無しさん:05/01/09 19:04:46
>753
新プロセスのIOを無名のパイプで繋げて、パイプの端を読み書きしてみろ。CreateProcess,CreatePipe,WriteFile,ReadFileを参照
759 :
デフォルトの名無しさん:05/01/09 19:17:02
760 :
デフォルトの名無しさん:05/01/09 19:22:38
>>759 難しいかどうかは、それを言う人の主観だから、第三者がどうこう言えることじゃない。
だけど、たかがあんなのでめげるようじゃ先が思いやられることだけは間違いない。
^^^^^^^^^^^^^^^^
参考書の筆者の話にすり替わりかけているが、騙されんじゃねえぞ。
初体験で失敗するとさ、インポになっちゃうんだよ。
だから優しく教えてくんなきゃイヤ。
>754
kbhitで食い潰すか、rewind呼ぶんだったかな。
BIOSなどのキーボードバッファに残る
rewindもfflushも、stdinで期待通りの動作をするのはVCだけ
>>765 では、どこのスレで質問すればよろしいのでしょう?
>>766 自分はVCで、期待通りの動作をしてくれないので質問してみました。
768 :
デフォルトの名無しさん:05/01/09 20:25:26
かなり変な環境じゃないのか。
ともかくキーが押されたら元に戻るまで待てばどうだ?
とりあえず、環境依存スレへ。
というのは、元々kbhit()というのが、DOS(コマンドプロンプトじゃないよ)で
BIOSコールでキーボード状態を知るためのものだから。
同様に標準出力を用いずにBIOS等で入力/表示するのが、conio.hにある関数群。
互換性のために、Windows環境でも残されている。
そして、これらは、stdio.hの関数群とは関係ないし、同時に使用してもいけない。
771 :
デフォルトの名無しさん:05/01/09 20:34:47
キーボードバッファは間違いだった。失礼。
//キー押しが来るまで待つ
while(!_kbhit());
//キー押しが戻るまで待つ
while(_kbhit());
元に戻るまで待つとはどういう事ですか?
今確認してみたんですが、やはり駄目です。
やっぱりgetch()でクリアする以外方法はないんですかね?
皆様ならば、getch()の中身を調べて、どこにアクセスして値を取り出しているか、
とかわかると思ったんです。
早とちりレス失礼しました。
>>771 なるほど。どうも、レスありがとうございます。
>>770 どうして、そんな事がわかるんですか?
ヘルプ見てもそんな事は一言も書いてなかったです。
何にしても、よくわかりました。
本当にありがとうでした。
相変わらず、バカが多いな
#defineを使って関数名の一部を変更したいんですが
#define aaa bbb
func_aaa();
のようにしてもfunc_bbb()にはなってくれません。
どうすればいいでしょうか?
#define func_aaa func_bbb
#define func_(x) func_##x
func_(aaa)() ;
じゃ不満かい?
779 :
デフォルトの名無しさん:05/01/10 05:20:46
> そして、これらは、stdio.hの関数群とは関係ないし、同時に使用してもいけない。
これ知ったかぶり。
前半はともかく、後半がデマ。
実際同時につかうことはよくある(いまでも)。DOSの時代もよく同時につかわれていた。
780 :
デフォルトの名無しさん:05/01/10 05:22:02
>>779 同時に使用できない、或いは使用すると不都合がある関数はいくつもあるよね。
それをデマボーグと言うのは言いすぎだと思うけど。
#つーか、未だに使っているのか ┐(´・ω・`)┌
783 :
デフォルトの名無しさん:05/01/10 14:19:24
入力した文字列がekeyと一致した時にbreakさせたいのですが、
うまくいきません。どこに問題があるのでしょうか?
while (1) {
fgets(text, 256, stdin);
if ((strcmp(text, ekey)) == 0 )
break;
fprintf(fp, "%s", text);
}
/* char text[256];
char *ekey = "//end" */
784 :
デフォルトの名無しさん:05/01/10 14:23:07
>783
fgetsは改行文字'\n'も格納する
785 :
783:05/01/10 14:28:50
>>784 即レスありがとうございます、助かりました。
printfが何回呼ばれたかとかいう具合に、
どの関数が何回呼ばれたかわかる、又はそれに類似した関数って無いですか?
787 :
デフォルトの名無しさん:05/01/10 14:46:30
>786
static int c;
#define printf c++,printf
ない
>>786 関数全てにstaticなカウンタを設けないと。
>787
これ、ありがたく使わせていただきます。
DevPartnerStudio買えば、もれなく関数カウンタがついてきます
792 :
デフォルトの名無しさん:05/01/10 14:56:22
>790
コンパイラのオプションにクロスレファレンスがないか?
最適化時に結構使えるぞ
《ドイツ語》 Demagogie
795 :
デフォルトの名無しさん:05/01/10 15:45:54
> どの関数が何回呼ばれたかわかる
profilerを使え!
796 :
デフォルトの名無しさん:05/01/10 17:16:59
>>781 conio と stdio が連携してない時点でクソリブの烙印くれたい
左辺値ってなんですか?
変数のことですか?
*(int *)0
は左辺値ですか?
799 :
デフォルトの名無しさん:05/01/10 17:25:20
>797
左辺値(lvalue)は、代入の左側に来る式のこと。
>*(int *)0
>は左辺値ですか?
びっくりするだろうけど、
これも左辺値だよ。
キャストで代入可能になったからね。
ageてる馬鹿がいるな
int a[10];
*(int *)a;
これは左辺値ですか?
ですよ。
つまり代入可能型にキャストすれば何でも左辺値ですか?
int i;
(int)i = 1;
これは左辺値ではありません。
-2["hoge"+3]
は左辺値ですか?
>>804 その通りです。
左辺値は変数だけとは限りません。
enum {
FALSE, TRUE
};
*(int *)FALSE = 1;
これも左辺値です。