[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.067 Ken3、久々C言語の質問にあわてる

Ken3、久々C言語の質問にあわてる


本文(発行内容)


<Ken3、久々C言語の質問にあわてる>

サブタイトル、、 ご教授下さいより、、解説できるもんならやってみろのほうが好 目次 1.はじめの挨拶 2.ご教授下さいより、、、解説できるもんならやってみろのほうが好き 3.本題の質問にやっとこたえる 4.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.はじめの挨拶 */ こんにちは。 三流PGのKen3です。 このメールマガジンは脚色されているので、 ご注意を、、、(実際と違う内容も含まれているので、) 今回は、なぜかKen3に来た、 CからVBへの移植の質問について、、書きたいと思います。 *ほんとは、愚痴以外は別に分けたVBAの方に書くんだけど、  今回は、こっちに載せて、反応見てからまとめてみたくて。。。  (なんか、あっちのVBA系は落ちつけなくて、、、) *みなさんの立場で読んで、笑ってください。  疑問・感想、、指摘、、あったら、メール下さい。 /* * 2.ご教授下さいより、、、解説できるもんならやってみろのほうが好き */ まだ、前置き、続きます。 私、変わり者なので(そんなん、いまさら言わなくてもわかってるって?) ご教授下さい、よろしくお願いします の質問より 解説できるもんならやってみろ のほうがなんとなく好きなんだよなぁ、、、 /* * 3.本題の質問にやっとこたえる */ 読者から来た、質問に下記のように答えました。 *足りないところや、ごまかし、あるので、  ご指摘、アドバイスください。 どうしたんですか?まじめな質問くるなんて、、、大丈夫ですか? って、前置きは、これくらいで、 私が今、わかる範囲での回答、書きます。 In message "移植。", >こんちは。ken3。 > >チョット必要に迫られて、C言語で書いたソースを解析してんだけど。 >ワカラン所教えて。(VBに移植する為) >(全てを送るわけには、行かないんで、コードが部分的だけど (笑)) > >1) > > #include   このヘッダーが有れば、LSIコンパイラでも使える? LSIコンパイラでも使える? これは、厳しいかも? > #include    このヘッダーは、何? getch()とか、コンソール系の関数だと思う。 SEEK_CURはstdio.hだと思うけど、 定数とかが入っている、、、 > #include   同上 なに? > #pragma hdrstop    これは、何でしょ? えっ、、 > #define BLOCK_SIZE 32768  これの意味は?VBで言うCONST? だと思って、いいと。 みなさんは、違うっていいそうだけど、、、 >-------------------------------------------- >2) > > #pragma argsused > int main(int argc, char **argv)   > { >*って、ポインタだよね? だけど「**」とは? >この場合、exeにコマンドラインを渡せるって事? >実際のexeでは、1つしか渡せないみたいだけど。 >なんで、引数が2つ? In message "[三流PG No.020] C,VB,Access,Excel ここはどこ?私は誰?", >/* > * 5.C ここはどこ?私は誰? >*/ >最後に、Cです(Ms−DOSコンソール) >----- >#include > >int main(int argc, char *argv[]) >{ > > printf("argv[0] = %s\n", argv[0]); > >} >----- >まだ、講座でやってませんが、Main関数の引数の、 >argvの0番目に、位置が入っていると思います。 > argcってのに、スペースで区切られたExeに渡された引数の数が入るんですよ kutabare.exe new1.txt outdata.txt なんてやると、 argcに2か3*忘れた、、 printf("argv[0] = %s\n", argv[0]); printf("argv[1] = %s\n", argv[1]); printf("argv[2] = %s\n", argv[2]); あと、argvにパラメーターが入ります。 char **argvはかっこいい書き方で、 char *argv[]のほうがKen3流 > if(!(chk_str = findFile(argv[1]))) 上の「**argv」は、これと関係ある?なぜに[1]か? argv[0]にEXEの起動位置が入っていて、 実際の引数は2番目[1]からなんですよたぶん。 予想、、、ファイル名をEXEの引数で渡して、なんかやってんの? >-------------------------------------------- >3) > > LPSTR findFile(const char *filename) LPSTRとは? LPSTR?なんだっけ?そんなのあった? if(!(chk_str = findFile(argv[1]))) でやってるから、 リターンでLPSTR型を返している? chk_strの型宣言、見てください。 > FILE *file; > char *buff = 0  これは、ポインタ宣言と、初期化を同時実行? > size_t rc;     これは、なに? まぁ、このへんは、あまり気にしないで、、 > prot_file = fopen(filename, "rb");  これは、バイナリでオープンだよね? だと思う。 > buff = (char *)malloc(BLOCK_SIZE); これの意味は? メモリを動的に取っているんですよ。 #define BLOCK_SIZE 32768 分、バッファを取っているんじゃない? 32768?16進に直すときりいいのかなぁ? > rc = fread(buff, 1, BLOCK_SIZE, file);  引数のそれぞれの意味は、なに? バッファへファイルから、読んでいると思えばいいと、、 1 * BLOCK_SIZE 分 file から読んで、buffにセット > fseek(file, -32, SEEK_CUR);    同上。でも、「SEEK_CUR」の宣言は、ないんだけど(汗)。 SEEK_CURはstdio.hとか、ヘッダファイルに定義されていると思う。 で、現在位置(ファイルの)から、32バイト分戻ってるみたいですね。 -32Lだと思うけど、、まぁ、いっか。 >  continue; これはなに? これ、ループの頭に戻る命令です。 例)1〜10までだけど、5だけ後処理したくない   for(i=1 ; i <= 10; i++) {     前処理 if (i == 5) { continue; これで、5の時は、下の処理しないでforに戻る             たしか、VBAには無くて、いろいろなとこで話題になってる?             break; は exit doなどあるから、、、わかりやすい? }     後処理 } > s = strchr(buff, '\"'); これの意味は? VBAのinstrと同じじゃないかなぁ? ”の位置を探して、何かしているとか? >-------------------------------------------- >4) > > va = strtol(sa, 0, 16); この関数は、なに? strtol?知らないなぁ、、 予想ですが、文字列をLong型にしているとか、、、 でも、それなら、atolがあるしなぁ、、 strtolって、関数、自作されてないか(標準関数以外?)みてください。 また、Vaの型宣言や、使われているところから、判断? saの変数は?0,16って? 16進の文字列を直しているとか? > CharToOem(str, s); もしかして、Winの関数?  これも、、、わからない、、、 またまた、予想? 文字列の連結とか置き換えとか、、自作関数では? >ちゅう訳で、たのんます。 まぁ、こんな感じで、、、簡単な回答です。。。 /* * 4.終りの挨拶 */ なんか、こっちの愚痴マガに書くほうが、 落ち着くなぁ、、、 もう一つのVBA系のほうは、なんかノリが悪くって、、、 *2つ(両方)読んでる人、、、重なってすみません。。。 continueの話とか、 ネタもらったし、まじめにVBA系も書くかなぁ、、、 三流PG Ken3でした。


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

リンクや広告など

項目別に本音?それとも建て前?的な記事をまとめました。

気になったジャンル↓を選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]