mainに引数を渡して、利用する

int main(int argc, char *argv[])
{
・・・・・・
・・・・・・
}

argc = パラメタの数( コマンド名を含む)
argv[0], arg[1],… = パラメタの値(文字列)

例)
prog test1.txt testout.txt Enter
と実行された場合,プログラム prog内では以下のように扱います。
argc = 3,
argv[0] = “prog”, argv[1] = “test1.txt”, argv[2] = “testout.txt”

カテゴリー: C | コメントする

ファイルに対する処理

ファイルへの入出力は「ファイルポインタ」を介して行います.

ファイルをOpenした時の戻り値がファイルポインタで、これを介して各種処理を行ってゆきます。

例)
int main(void)
{
FILE *fp;
int c;
fp = fopen(ファイル名,”r”);
//ファイルポインタの位置の文字を読みcに代入をEOFまで続ける。
while( (c = getc(fp) ) != EOF ) {
(文字 c に対する処理)
}
fclose(fp);
exit(0);
}

処理には、
int getc(FILE *fp)
ファイルポインタ fp により示されるファイルの「現在位置」を次の文字に進め,その文字を値として返す。
int putc(int c, FILE *fp)
ファイルポインタ fp により示されるファイルの「現在位置」=「最後尾」に文字c を書き込み,「現在位置」を次に移動する。
int fprintf(FILE *fp, char *format, …)
printf と同じ、違うのはファイルポインタ fp により示されるファイルの「現在位置 」に書き込む。

カテゴリー: C | コメントする

SQLコマンド

データーベース操作にはSQLコマンドを使います。コマンドは小文字でも大文字でも構いません。

データベース作成
=# CREATE DATABASE データベース名;
※データベース名に日本語を使うと、動作が不安定になります。
テーブルの作成
=# CREATE TABLE テーブル名(フィールド定義);
フィールド定義は
(
フィールド名1 型1,
フィールド名2 型2,
フィールド名3 型3,
PRIMARYKEY(フィールド名n)
)
テーブルの削除
=# DROP TABLE テーブル名;
テーブルへのデータ入力
=# INSERT INTO テーブル名

(
フィールド名1,
フィールド名2,
:
)
VALUES
(
値1,
値2
:
);
テーブルの全レコードの一覧表示
=# SELECT * FROM テーブル名;
レコードの修正
=# UPDATE テーブル名
SET フィールド名1=値1,
フィールド名1=値1,
:
WHERE 更新条件;
レコードの参照
SELECT フィールド名1, フィールド名2,…
FROM テーブル名
WHERE 条件式
ORDER BY フィールド名;
カテゴリー: PostgreSQL | タグ: | コメントする

PstgreSQLメタコマンド

PstgreSQLの操作のためのコマンドをメタコマンドと呼びます。
メタコマンドはpostgresにログイン後、postgres=#のプロンプトが出ている状態で入力できます。

データベースの切り替え
postgres=# ¥c データベース名
SQLソースファイルの実行
postgres=# ¥i SQLファイル名

情報確認

データベースの一覧
postgres=# ¥l
テーブル、ビュー等の一覧
postgres=# ¥d
テーブルの一覧
postgres=# ¥dt
対象情報の表示
postgres=# ¥d テーブル名, ビュー名 等
カレントディレクトリの変更
postgres=# ¥cd ディレクトリ名
コマンドの実行
postgres=# ¥! コマンド名
SQL命令のヘルプ
postgres=# ¥h [SQL 命令]
メタコマンドのヘルプ
postgres=# ¥?
カテゴリー: PostgreSQL | タグ: , , | コメントする

既存プロジェクトをインポートして改良する手順

既存プロジェクトxxx0NがワークスペースA内にある場合、xxx0Nを
改良したxxx0(N+1)を作る手順(C言語プロジェクトを想定)

1.ワークスペースAフォルダー内でxxx0Nフォルダーをコピー/ペーストしてxxx00フォルダーを作る
2.eclipseでxxx00プロジェクトをインポート
3.プロジェクト名をxxx(N+1)に変更
4.プロジェクト名変更でエラーが出た場合は、.projectファイルを開いて直接タグの内容(プロジェクト名)をxxx(N+1)に変更
5.ソース名をxxx(N+1).cに変更
6.GUIアプリでソース内のウインドウクラス名にプロジェクト名を使っている場合はクラス名を変更
7.ビルドする
8.[実行]-[デバッグの構成]でメインだ部のc/C++パスが正しくない場合は修正する

カテゴリー: eclipse | タグ: , , | コメントする

Windows APIを利用する為のDLLリンク

Windows APIを利用するアップリケ―ションを開発する場合には、使用するAPIの含まれるダイナミックリンクライブラリ(DLL)のアドレスをリンクする必要があります。

例えば、
WinSock APIであればws2_32.lib
GUI APIであればgdi32.lib
です。

WinAPIを使うためのDLLリンク指定
カテゴリー: C | タグ: , , , | コメントする

C++ソースをCでコンパイルする

単純なC++ソースがCコンパイラでコンパイルできない時があります。

多くの場合、定数定義や型宣言の違いが原因の時があります。
つまり、論理型はC言語ではboolean型ですが、C++ではbool型。
論理値もCではTRUE、Falseですが、C++ではtrue、falseです。

そこで、次のinclude文をC++ソースに追加追加してCでコンパイルするとコンパイルが通る場合があります。
#ifndef bool /* bool が定義されていなかったら */
#define bool boolean
#endif

#ifndef true /* true が定義されていなかったら */
#define true TRUE
#endif

#ifndef false /* false が定義されていなかったら */
#define false FALSE
#endif

カテゴリー: C | タグ: , | コメントする

「表示」を表示しようとすると壊れる

MinGWのgccコンパイラは、文字列がsift-jisの場合特定の文字列を正しく認識しません。
この場合「表」の2バイト目は「0x5C」、つまり¥なため、次の「示」の1バイト目の「0x8E」(これの8進数表記が 216)が不明なエスケープシーケンスだと判断してしまい、unknown escape sequence: ‘¥216’というワーニングを出します。
これをそのまま実行すると以下のように「表示」の表示が壊れます。

「表示」の表示が壊れる

本来はコンパイラにパッチを当てればよいのでしょうが、適切なパッチを見つけるのは困難なので簡易の打開策として「表」の後に半角¥を挿入する方法があります。

「表示」の表の後に\を挿入
カテゴリー: eclipse | タグ: , , | コメントする

引数付きでCプログラムを実行する。

引数付きでプログラムを実行したいときは、実行構成タブから実行します。

1.Cプログラムの起動時に引数を渡す
[実行]-[実行構成]の引数タブで引数を記入し[実行]

Cプログラムの起動時に引数を渡す

実行結果はコンソールで確認

eclipseのWorkspace指定付き起動
カテゴリー: eclipse | タグ: , , | コメントする