C言語なら俺に聞け! Part 93

このエントリーをはてなブックマークに追加
676デフォルトの名無しさん:04/10/27 23:47:30
>>675
(〃∇〃)見てるこっちが恥ずかしいぞ
677デフォルトの名無しさん:04/10/27 23:58:41
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
678デフォルトの名無しさん:04/10/28 00:04:15
>>677
阿川弘之の初期の短編小説で「鱸とおこぜ」というのがあった。
昔は国語の教科書に収録されていたので知っている人も多いと思うが、食いつ
679デフォルトの名無しさん:04/10/28 01:13:26
K&RのUNIXの章がマジわからぬ。これ分からなくても問題ないですよね??
あと、アルゴリズムの入門書に、動的計算法がのってるけど、これ全然入門者向けじゃないよ〜
680:04/10/28 01:15:07
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
681デフォルトの名無しさん:04/10/28 01:24:39
質問おねがいします
C言語でDOS画面を出さずに裏で実行するアプリケーションを作るにはどうしたら言いのでしょうか
できるだけ自分で調べますのでヒントだけでもおしえて下さい
682デフォルトの名無しさん:04/10/28 01:26:03
rubyyyyyyyyyyyyyyyyyyyyyyyyyy
683r/556:04/10/28 01:34:35
>>681
TSRでググれ
684デフォルトの名無しさん:04/10/28 01:38:05
>>683
即レスありがとうございます。
常駐プログラムの作成法というのがいくつかヒットしました。
勉強してみます。ありがとうございます。
685デフォルトの名無しさん:04/10/28 08:06:21
CでTSRを書くと、無駄な領域まで常駐しちゃうから
メモリ勿体ないよな。
>>681 がんがれ!
686デフォルトの名無しさん:04/10/28 09:14:48
>>681
単に表にウィンドウが出なければいいだけなら、ショートカット作ってプロパティで設定するだけだけど?
687デフォルトの名無しさん:04/10/28 14:57:43
>>681
#include <windows.h>
#include <stdio.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}

ダメかな・・・
688デフォルトの名無しさん:04/10/28 15:21:44
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()を実行するところで
ハンドルされていない例外が発生します。

どこを直せばいいのでしょうか。
689デフォルトの名無しさん:04/10/28 15:41:05
>>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);
690688:04/10/28 16:26:20
B()はGetProcAddressから読み出さないため__stdcallは必要無かったようです。
うまくいきました。ありがとうございます。
691デフォルトの名無しさん:04/10/28 19:02:39
質問よろしいでしょうか
文字型配列 T[255]にscanfから文字を格納します。
その T の先頭文字だけをatoi関数を使って数字にしたいのですが、
エラーが出てきてしまいます。解決法は無いでしょうか。
692デフォルトの名無しさん:04/10/28 19:05:54
>>691
先頭の1文字だけを数字にしたいなら
int n=(T[0] - '0')じゃダメなん?
693デフォルトの名無しさん:04/10/28 21:46:41
>691

書き方が悪い。
694デフォルトの名無しさん:04/10/29 03:01:18
scanf使うな ぼけ
695デフォルトの名無しさん:04/10/29 03:04:17
>692
なんで括弧で囲っているの?
696デフォルトの名無しさん:04/10/29 06:44:35
>>695
なんでそんなこと気にするの?
697デフォルトの名無しさん:04/10/29 06:49:34
>696
かっこつけたかっただけだろう
698デフォルトの名無しさん:04/10/29 07:21:35
>>697
ワロタ
699デフォルトの名無しさん:04/10/29 07:36:20
>>698
('A`) うそっ!? マジで?
700デフォルトの名無しさん:04/10/29 07:39:18
徹夜明けって、ハイになるよな。
701デフォルトの名無しさん:04/10/29 07:43:04
寒いしな
702デフォルトの名無しさん:04/10/29 08:57:58
燃え尽き症候群か?<灰になった
703デフォルトの名無しさん:04/10/29 14:02:41
popen()を利用すると標準入出力の入力か出力をパイプにできますが
両方同時にパイプを使いたい時はどうすればいいでしょうか
704デフォルトの名無しさん:04/10/29 15:02:20
パイプを2つ使えばどうでしょうか
705デフォルトの名無しさん:04/10/29 15:06:59
>>703
標準関数ではできないので該当スレへどうぞ。
#まぁ、>704しかないな。
706デフォルトの名無しさん:04/10/29 18:11:23
>>705
Cやん
707デフォルトの名無しさん:04/10/29 18:25:54
今日学校でscanfをつかっていたらそんなの使うなと
怒られました。fgetsをつかえっていわれたんですけど
実際scanfをつかうのはやばいんでしょうか?
708デフォルトの名無しさん:04/10/29 18:36:23
>>707
入力できる文字数を指定できないから、
例えば大量の文字列を入力した場合、確保した領域外を侵される可能性がある。
709デフォルトの名無しさん:04/10/29 19:53:07
領域を侵した場合の動作は未定義。
標準入力から入力される内容を事前に知ることは出来ない。
scanfは読み込むサイズを制限できない。
以上から
scanfを呼び出した場合の動作は未定義と考えられますが、
そのように書かれていないのはなぜなんでしょうか?
710デフォルトの名無しさん:04/10/29 19:58:12
>>709
以上から、以外の定義を無視して未定義だって?
711デフォルトの名無しさん:04/10/29 19:59:02
>>709
入力文字数が確保した領域内に収まる限り、scanfは正常に動作する。
入力するのは人だが、入力できる文字数をあらかじめ知っていると仮定し、
かつ、人がそれを守ったとしたら間違った動作は起きない。
しかし、もしそれを守らない人がいたら動作は保証できない。
それがバグだ。
712デフォルトの名無しさん:04/10/29 19:59:17
>>708
%255s
713デフォルトの名無しさん:04/10/29 20:11:33
>>707
マニュアルをろくに読まないで自爆しまくってる自称ベテランです
あんまり毒されないほうがいい
そういう人に何か質問するときは腫れ物に触るように気を使いましょう
あなたの何気ない素朴な質問に突然キレたりします
714デフォルトの名無しさん:04/10/29 22:32:35
>>711
それはバグじゃない。仕様だ。
715デフォルトの名無しさん:04/10/29 22:46:18
char s = ' ';
strlen(&s);

これもバグですか?
716デフォルトの名無しさん:04/10/29 22:50:10
アンカー忘れ
>>711
717デフォルトの名無しさん:04/10/29 22:53:56
>>715
仕様を理解していてそんな使い方する人いるのか?
バグや仕様以前に、バカだろ?それは
718デフォルトの名無しさん:04/10/29 23:15:25
fopenでテキストモードで開いたとき、freadとかfgetcとかの入出力関数は
いちいち1バイトずつ'\r'かどうかとかチェックしてるんですか?

遅そう。
719デフォルトの名無しさん:04/10/29 23:24:48
>>718
では、速い方法を教えてください
720デフォルトの名無しさん:04/10/29 23:34:40
>>718
一般的なディスクから読み込む速度に比べたら誤差のようなものです。
721デフォルトの名無しさん:04/10/29 23:34:44
テキストで読み書きする必要なければバイナリでやればいい
722デフォルトの名無しさん:04/10/30 01:07:42
>>715
なんにも問題ないコードだろ ぼけ。

char *p = NULL;
strlen(p);
と同じぐらい問題ない。
723デフォルトの名無しさん:04/10/30 02:09:04
#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)
724デフォルトの名無しさん:04/10/30 02:11:42
>>723
で、それに何の意味が?
725デフォルトの名無しさん
>>723
ワロタ