cwnicol programming

プログラミング関連の投稿をすこしだけ

fopen()のテキストモード、バイナリモード

これらのモード指定はWindowsでfopen()を使用する際に 考慮するものだ。 Linuxでモード指定は必要ない。なぜならばLinuxにおける 「テキストファイルの改行コード」と「プログラム内部の改行コード」が 一致しているからだ。(共に0x0a) OS テキストファイル…

C++ソースから、Cで作成したライブラリをリンクする方法

■概要 何も考えずに下図のような構成にすると、 C++ソース(下図ではA.o)から、Cで作成したライブラリ(下図ではC.o)を リンクできない。 ■原因 関数呼び出し1で、探している名前("関数Z@sjadfpioa"(*1))と 実際の名前("関数Z")が異なるので、関数Zを探し…

データ構造が配列になっていない場合の対処方法

データ構造が配列になっていれば、ループを使用して、 書けるが、配列構造になっていない場合には、変数の 数だけ関数を書かなければならない。 →マクロを使用してなんとかならないか(←出発点) (追記)マクロのほかに、ワーク用領域(配列を使って定義)…

C言語 ファイルサイズ(バイト)取得

GetFileSize ■注意点 fpos_t型は、環境により実装が異なるらしいので、 GetFileSize関数でファイルサイズ取得後は、 適宜環境に合わせてposを使用のこと。 ■fell()かfgetpos()のどちらを使用するかについて fell()を使用すると、long型でファイルサイズを取…

gdb core デバッグ

limit[リターン]coredumpsize unlimited → coreを生成する coredumpsize 0 kbytes → coreを全く生成しない limit coredumpsize unlimited デバッグ手順>gdb プログラム coreファイル

c言語 qsort

#include<stdio.h> #include<stdlib.h> #define SIZE 10 typedef struct{ int i; char str[5]; } hoge; int Comp(const void *, const void *); void print(hoge *); // メイン int main(){ hoge shoge[SIZE] = { {3, "abc"}, {1, "ABC"}, {9, "uyr"}, {2, "4gy"}, {4, "stg"}, </stdlib.h></stdio.h>…

Microsoft Loopback Adapterを使う。

Virtual PC上のLinux(ゲストOS)とWindows(ホストOS)で通信したい。 以下Microsoft Loopback Adapterを使用してそれを実現。 ホストOS : Windows XP ゲストOS : Linux(RHEE9)[ ]はどちらのOSで行うかを示す。 (1)Microsoft Loopback Adapterをインストール[ホ…

float型をhtonl(), ntohl()

int main(){ int i; char *p; float f = 1; for(i = 0;i < sizeof(float);i++){ p = (char *)&f; printf("%02X ", (char)*(p + i)); } putchar('\n'); f = htonl(f); //f = htonl(*(long *)&f); for(i = 0;i < sizeof(float);i++){ p = (char *)&f; printf("…

リトルエディアン ビッグエディアン 判別プログラム

int main(){ short s; char *cp; s = 1; cp = (char *)&s; if(*cp){ printf("リトルエディアン\n"); }else{ printf("ビッグエディアン\n"); } return 0; } shortは上図のように2バイトを使用する。 ・リトルエンディアンの場合には、低位バイトから値を格納…

ソフトウェア 視点

ソフトウェアに対する視点は2つある。 一つは開発者の視点。 もう一つは利用者の視点。 ソフトウェア開発者には、開発者の視点だけではなく 利用者の視点も必要。 コーディングは開発者の視点で、 テスト項目は利用者の視点で作る?

vi タグジャンプ

ソースのトップディレクトリで ctags -R . Ctrl + ] タグジャンプ Ctrl + o または Ctrl + t タグジャンプバック Ctrl + w } カーソル位置の単語の定義を、プレビューウィンドウで開く。 Ctrl + w Ctrl + z プレビューウィンドウを閉じる。(:pcと同じ) g Ctr…

GDB アタッチ

参考URL:http://www.fireproject.jp/feature/gdb/advanced/attach.html (1)fileでシンボルファイルすなわちこれからattachするプロセスの シンボル情報を持っているファイルを指定する. (2)directoryコマンドで読み込んだファイルのソースを検索できるように…

GDBデバッガの使い方

■主なコマンド コマンド 意味 r 実行開始 s ステップイン n ステップオーバー fin ステップアウト q gdb終了 p 値の表示(任意の式を実行することも可(※1)) x 値の表示 set 値の設定。pを使って設定してもよい。例)p hoge=1 ※1 p memset(hoge, 0x00, sizeof(h…

#ifdef、#endifを使わないデバッグprint

#include <cstdio> using namespace std; #define DEBUG #ifdef DEBUG # define DEBUG_PRINTF(message) fprintf(stderr, message) # define DEBUG_PRINTF2(f, a, b) fprintf(stderr, f, a, b) #else # define DEBUG_PRINTF(message) # define DEBUG_PRINTF2(f, a, b)</cstdio>…

技術情報

技術情報をちょこちょこ貯めていこうと思う。 しっかりと裏がとれてないものもあると思うので 流用する場合には気をつけて。間違いを見つけたら指摘してください