【C++】char配列をフォーマット指定で書き込むときの注意

C++(しーぷらすぷらす)

とあるC++ソースの不具合を調査をしていたところ、おかしな動きをしている箇所があった。

サンプルソース

// 変数宣言
char strA[] = "12345678";
char strB[8];
char ret[16];

// 初期化
memset(strB, 0x00, sizeof(strB));
memset(ret, 0x00, sizeof(ret));

// "12345678"をchar[8]の配列にコピー
memcpy(strB, strA, sizeof(strB));

// char[8]の内容をシングルクォーテーションで囲ってchar[16]の配列へ
sprintf(ret, "'%s'", strB);

// char[16]の配列を返す
return ret;

こんな感じのソースで、retの値に「’12345678’」が入ることを期待していたんだけど、変な値で返ってくる…。

サンプルソースで書いてしまえば一目瞭然なんだけど、実際のソースはもっと複雑なのと、SDLチェックも外されていたので、原因に気付くまで時間がかかった。

“【C++】char配列をフォーマット指定で書き込むときの注意” の続きを読む

Electronで電卓を作ってみた(Fiddle使用)

Electronで電卓作ってみた

Electron開発の勉強で、電卓アプリを作ってみた。

“Electronで電卓を作ってみた(Fiddle使用)” の続きを読む

【Electron】プロジェクト(パッケージ)のファイル構成

Electron Logo

前回の記事:Electronで開発を始める(サンプルアプリ起動まで)で、Electron Fiddleの起動まで行った。

次は、初期表示されているファイルから、Electronのプロジェクトファイル構成を調べてみる。

“【Electron】プロジェクト(パッケージ)のファイル構成” の続きを読む

Electronで開発を始める(サンプルアプリ起動まで)

Electronを始める

デスクトップアプリの開発にElectronを使ってみたい!

ということで、開発環境の構築からアプリ起動までやってみたのでそのメモ。

“Electronで開発を始める(サンプルアプリ起動まで)” の続きを読む

【Windows】SourceTreeの実行場所

SourceTreeの実行場所

GitクライアントはTortoiseGit派だったんだけど、ブランチ切替の容易さから、SourceTreeも併用することにした。

インストーラをダウンロードして、インストールを始めたけど、認証したアカウントを間違えたので一旦インストールをキャンセル。

その後、もう一度インストーラを起動すると…

“【Windows】SourceTreeの実行場所” の続きを読む