|
|
|
|
/V\ ,J
/◎;;;,;,,,,ヽ
_ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
>>677 阿川弘之の初期の短編小説で「鱸とおこぜ」というのがあった。
昔は国語の教科書に収録されていたので知っている人も多いと思うが、食いつ
679 :
デフォルトの名無しさん:04/10/28 01:13:26
K&RのUNIXの章がマジわからぬ。これ分からなくても問題ないですよね??
あと、アルゴリズムの入門書に、動的計算法がのってるけど、これ全然入門者向けじゃないよ〜
|
|
|
|
/V\ ,J
/◎;;;,;,,,,ヽ
_ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
681 :
デフォルトの名無しさん:04/10/28 01:24:39
質問おねがいします
C言語でDOS画面を出さずに裏で実行するアプリケーションを作るにはどうしたら言いのでしょうか
できるだけ自分で調べますのでヒントだけでもおしえて下さい
rubyyyyyyyyyyyyyyyyyyyyyyyyyy
>>683 即レスありがとうございます。
常駐プログラムの作成法というのがいくつかヒットしました。
勉強してみます。ありがとうございます。
CでTSRを書くと、無駄な領域まで常駐しちゃうから
メモリ勿体ないよな。
>>681 がんがれ!
>>681 単に表にウィンドウが出なければいいだけなら、ショートカット作ってプロパティで設定するだけだけど?
>>681 #include <windows.h>
#include <stdio.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}
ダメかな・・・
exeとdllが一つづつ存在する。
exeには二つの関数a()とb()が定義されている。
dllには二つの関数A()とB()が定義されている。
exeはLoadLibrary、GetProcAddressを使って
A()を実行し引数として関数ポインタaを渡す。
A()は与えられたポインタaからa()を実行し
引数として関数ポインタBを渡す。
a()はポインタBからB()を実行し
引数として関数ポインタbを渡す。
B()は与えられたポインタbからb()を実行する。
typedef void(*FUNC_b)( void );
typedef void(__stdcall *FUNC_B)( void(*FUNC_b)(void) );
typedef void(*FUNC_a)( void(__stdcall *FUNC_B)( void(*FUNC_b)(void) ) );
typedef void(__stdcall *FUNC_A)( void(*FUNC_a)( void(__stdcall *FUNC_B)( void(*FUNC_b)(void) ) ) );
とやったのですが、
exeがLoadLibrary、GetProcAddressを使ってA()を実行するところで
ハンドルされていない例外が発生します。
どこを直せばいいのでしょうか。
>>688 スレ違いかと思ったが、取り敢えず「何のために typedef したのか」と。
typedef void *FUNC_b(void);
typedef void __stdcall *FUNC_B(FUNC_b);
typedef void *FUNC_a(FUNC_B);
typedef void __stdcall *FUNC_A(FUNC_a);
B()はGetProcAddressから読み出さないため__stdcallは必要無かったようです。
うまくいきました。ありがとうございます。
質問よろしいでしょうか
文字型配列 T[255]にscanfから文字を格納します。
その T の先頭文字だけをatoi関数を使って数字にしたいのですが、
エラーが出てきてしまいます。解決法は無いでしょうか。
>>691 先頭の1文字だけを数字にしたいなら
int n=(T[0] - '0')じゃダメなん?
>691
書き方が悪い。
694 :
デフォルトの名無しさん:04/10/29 03:01:18
scanf使うな ぼけ
695 :
デフォルトの名無しさん:04/10/29 03:04:17
>692
なんで括弧で囲っているの?
697 :
デフォルトの名無しさん:04/10/29 06:49:34
>696
かっこつけたかっただけだろう
徹夜明けって、ハイになるよな。
寒いしな
燃え尽き症候群か?<灰になった
popen()を利用すると標準入出力の入力か出力をパイプにできますが
両方同時にパイプを使いたい時はどうすればいいでしょうか
パイプを2つ使えばどうでしょうか
>>703 標準関数ではできないので該当スレへどうぞ。
#まぁ、>704しかないな。
707 :
デフォルトの名無しさん:04/10/29 18:25:54
今日学校でscanfをつかっていたらそんなの使うなと
怒られました。fgetsをつかえっていわれたんですけど
実際scanfをつかうのはやばいんでしょうか?
>>707 入力できる文字数を指定できないから、
例えば大量の文字列を入力した場合、確保した領域外を侵される可能性がある。
領域を侵した場合の動作は未定義。
標準入力から入力される内容を事前に知ることは出来ない。
scanfは読み込むサイズを制限できない。
以上から
scanfを呼び出した場合の動作は未定義と考えられますが、
そのように書かれていないのはなぜなんでしょうか?
>>709 以上から、以外の定義を無視して未定義だって?
>>709 入力文字数が確保した領域内に収まる限り、scanfは正常に動作する。
入力するのは人だが、入力できる文字数をあらかじめ知っていると仮定し、
かつ、人がそれを守ったとしたら間違った動作は起きない。
しかし、もしそれを守らない人がいたら動作は保証できない。
それがバグだ。
713 :
デフォルトの名無しさん:04/10/29 20:11:33
>>707 マニュアルをろくに読まないで自爆しまくってる自称ベテランです
あんまり毒されないほうがいい
そういう人に何か質問するときは腫れ物に触るように気を使いましょう
あなたの何気ない素朴な質問に突然キレたりします
char s = ' ';
strlen(&s);
これもバグですか?
>>715 仕様を理解していてそんな使い方する人いるのか?
バグや仕様以前に、バカだろ?それは
718 :
デフォルトの名無しさん:04/10/29 23:15:25
fopenでテキストモードで開いたとき、freadとかfgetcとかの入出力関数は
いちいち1バイトずつ'\r'かどうかとかチェックしてるんですか?
遅そう。
>>718 一般的なディスクから読み込む速度に比べたら誤差のようなものです。
テキストで読み書きする必要なければバイナリでやればいい
722 :
デフォルトの名無しさん:04/10/30 01:07:42
>>715 なんにも問題ないコードだろ ぼけ。
char *p = NULL;
strlen(p);
と同じぐらい問題ない。
#include <stdio.h>
int main(void)
{
char s = ' ';
char *p = NULL;
printf("%d\n", strlen(&s));
printf("%d\n", strlen(p));
return 0;
}
%./nullpo
10
Segmentation fault (core dumped)