[三流君] −−>
[プログラマー業務の愚痴] −−>
[バックナンバー一覧]
−−> No.069 Ken3、指摘メールに考えさせられる
Ken3、指摘メールに考えさせられる
本文(発行内容)
<Ken3、指摘メールに考えさせられる>
目次
1.はじめの挨拶
2.と、その前に、また、ご教授下さいファンに一言?
3.調べないで、いいかげんなこと書かないでほしい
4.おわりの挨拶
枠外:読者からの質問メールです
----------------------------------------------------------------------------
/*
* 1.はじめの挨拶
*/
こんにちは。
今回は、
読者より受け取ったメールで
私が、ハッと思ったことを書きます。
*反面教師?としてください。
*みなさんの立場で読んで、笑ってください。
疑問・感想、、指摘、、あったら、メール下さい。
/*
* 2.と、その前に、また、ご教授下さいファンに一言?
*/
と、その前に、また、ご教授下さいファンに一言?
引用OKさんより(引用しないけど)
ご教授下さい
でも
よろしくお願いします
どちらでも、
なんでもいいだろ、
素人相手に天狗になってんじゃないの?
^^^^^^^^^^^^^^^^
と、ご意見いただきました。
まぁ、たしかに、関係ないですね。
*最後が、ご教授下さい でも ヨロシクでも、
質問の内容にはゼンゼン関係ないですね。(質問は同じですね)
/*
* 3.調べないで、いいかげんなこと書かないでほしい
*/
調べないで、いいかげんなこと書かないでほしい
と びいさんより メールをいただきました。
読むと、作者の私としては、ドキッとすること書いてあります。
チョット軽い気持ちで調べないで、
あいまいな自分の記憶や経験で書いていたので、少し反省です。
*自分が知らない(strtol)のは標準関数以外?かなぁなんて、
よく言えたよね(よく書けたよねそんなこと)
下記、びいさんよりいただいたメールです。
読者の方にも何か参考になると思い、いただいたメールを載せます
This is forwarding message...
On Thu, 8 Jun 2000 12:40:00 +0900
mag2 ID 0000019869 wrote:
いや、だから…。
「知らない」というのは全然恥ずかしいことではないのですよ。
でも「調べない」というのはどうかと…。
以前の[No.52]へのチャチャ入れでも書きましたが、
|そういう資料を読めない探せない、見つけることができない、というようではプ
|ロとしては失格でしょう。
と。
また、解らないなら解らないでそう書くべきです。当てずっぽや推測を書いてし
まうのでは単なるいいかげんな人です。
> > #include このヘッダーが有れば、LSIコンパイラでも使える?
>
> LSIコンパイラでも使える?
> これは、厳しいかも?
御意。まずLSIコンパイラというのがなんなのか解りません。LSI-C86のことでしょ
うか。
また、使えるというのは? LSIコンパイラというコンパイラでコンパイルできれば
Visual Basicに移植しなくてもいい、ということ? 「使える」という言葉の主語
は何でしょうか。何が使えるのかさっぱり解りません。
非常に厳しいといわざるをえないでしょう。
> > #include このヘッダーは、何?
> getch()とか、コンソール系の関数だと思う。
御意。
> > #include 同上
> なに?
コレってANSI標準ではなかったと思います。
名前からするとconio.hで用いてるdefineが記述されているのかもしれませんが解
りません。何のコンパイラで使っていたヘッダでしょうか。
コンパイラのマニュアルを見たほうが早いと思います。
> > #pragma hdrstop これは、何でしょ?
> えっ、、
pragmaは処理系依存です。正確な意味はコンパイラのマニュアルを見るしかあり
ません。
Visual C++ではプリコンパイルドヘッダの制御に使いますが、使っているコンパ
イラってVisual C++ですか ?さっき出てきたLSIコンパイラとは何の関係が…。
謎が深まってしまいました。
> > #define BLOCK_SIZE 32768 これの意味は?VBで言うCONST?
> だと思って、いいと。
御意。
> みなさんは、違うっていいそうだけど、、、
確かに他にも用途はありますが、これは定数として用いているのだと思います。
> >*って、ポインタだよね? だけど「**」とは?
> >この場合、exeにコマンドラインを渡せるって事?
> >実際のexeでは、1つしか渡せないみたいだけど。
> >なんで、引数が2つ?
Cの決まりです。
実行ファイルの引数の数というのは、決まっていません。
どんな実行ファイルでも動かせるようにCでは
・引数の数
・引数の配列
の二つをmain()関数の引数にしています。
それが int argc(引数の数) char **argv(引数の配列)です。
**ということはあまり気にしないで、
argv[1]で一つめの引数(文字列)
argv[2]で二つめの引数(文字列)
が受け取れる、と考えておけばOk。なんで**なのかということはC言語で文字列の
扱いを調べてください。
argcが3だと、argv[0]、argv[1]、argv[2]、の三つが使えます。argv[3]はNULLに
なっています。argv[4]にアクセスするとコケます。
ちなみにargv[0]には実行ファイルのファイル名が入っています。
> argv[0]にEXEの起動位置が入っていて、
> 実際の引数は2番目[1]からなんですよたぶん。
起動位置というのが解りませんが、最後の「たぶん」というのが気になります。
調べていないのですか?調べないで回答していますか?
> > LPSTR findFile(const char *filename) LPSTRとは?
> LPSTR?なんだっけ?そんなのあった?
windows.hでincludeでしているwinnt.hでtypedefしているハズです(32ビットの場
合)。
char*かwchar_t*になります。
> > char *buff = 0 これは、ポインタ宣言と、初期化を同時実行?
御意。個人的には
char *buff=NULL;としたいところです。0でも問題はありません。
> > size_t rc; これは、なに?
size_tという型があります(stdio.hで定義)。fread()がsize_tを返してくるので
ソレに合わせたのでしょう。
size_tは整数型ですが、intなのかlong intなのかという細かいところはコンパイ
ラによって違います。ですから、今使っているコンパイラがintで問題ないからと
いってintにすると、コンパイラを変えた時に痛い目にあいます。
ソレがイヤならsize_tにしておきましょう。
> > prot_file = fopen(filename, "rb"); これは、バイナリでオープンだよね?
> だと思う。
だと「思う」では不安です。よく解らないなら調べたほうが安全です。
これはバイナリ読み込み専用オープンですね。
> > buff = (char *)malloc(BLOCK_SIZE); これの意味は?
>
> メモリを動的に取っているんですよ。
こっちでは「思う」とか書かずに断言していますから、知っている内容は調べず
に回答している、知らない内容は調べないでいいかげんなことを書いていると思っ
てしまいます。
> 32768?16進に直すときりいいのかなぁ?
32Kジャストでキリはいいですね。
> SEEK_CURはstdio.hとか、ヘッダファイルに定義されていると思う。
> で、現在位置(ファイルの)から、32バイト分戻ってるみたいですね。
御意。
> -32Lだと思うけど、、まぁ、いっか。
ちゃんとstdio.hをincludeしてあれば-32と書いてもOkです。コンパイラが正しく
変換します。
> > s = strchr(buff, '\"'); これの意味は?
>
> VBAのinstrと同じじゃないかなぁ?
> ”の位置を探して、何かしているとか?
buffに格納されている文字列を先頭から検索して「"」を探します。
見つからなかったらNULLを返します。
ですからあとでsを確認してエラーチェックしないといけません。
無条件にstrcpy(buff, s)とかいう感じでsを使ってしまうとコケます。
> > va = strtol(sa, 0, 16); この関数は、なに?
> strtol?知らないなぁ、、
> 予想ですが、文字列をLong型にしているとか、、、
> でも、それなら、atolがあるしなぁ、、
atol()は十進数の文字列("100"とか)専用です。
strtol()は引数で何進数の文字列かを指定できます。この場合は十六進数として
変換します。
ここも個人的には va=strtol(sa, NULL, 16);と書きたいところ。
きっとsaには「89AB」とか入っているのでしょう。
> strtolって、関数、自作されてないか(標準関数以外?)みてください。
標準関数です。
> > CharToOem(str, s); もしかして、Winの関数?
> > これも、、、わからない、、、
WindowsAPIです。
とにかく、ちょっち調べれば解ることが書かれていなかったりいいかげんなこと
が書いてあったりして残念です。
全部覚える必要は全くありませんが、覚えていないからといっていいかげんなこ
とを書くのはどうかと思います。
--びい
/*
* 4.終りの挨拶
*/
>ヤッパ、こっちの愚痴マガに書くほうが、落ち着く。
なんて安易な気持ちで書いていたのが、、、、、
それと、質問してくる人は、
ご教授下さい
とか言葉関係なく、真剣なのに、、、依頼の方法が好きじゃない
なんて、えらそうに書いてしまい。。。
今回も、指摘メールに考えさせられた、三流PG Ken3でした。
------------------------------------------------------------------
このメールマガジンを解除するには、お手数ですが、
http://rap.tegami.com/mag2/m/0000019869.htm
にいって、あなたのメールアドレスを入れて、解除のボタンを押してください。
------------------------------------------------------------------
フィードバック
愚痴系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[広告・副収入系]
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告