<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C | ゲームに囲まれたい生活</title>
	<atom:link href="https://gamekineki.com/tag/c-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://gamekineki.com</link>
	<description>ゲームを含めた自分の趣味を語ってゆくブログ</description>
	<lastBuildDate>Sat, 18 Jan 2025 16:23:46 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://gamekineki.com/wp-content/uploads/2024/02/cropped-58c0d6b17f7ea6322ea76689afd67af0-32x32.jpg</url>
	<title>C | ゲームに囲まれたい生活</title>
	<link>https://gamekineki.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VisualStudioで文字コードに２,３日翻弄された話+その解決策</title>
		<link>https://gamekineki.com/post-415/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Sat, 18 Jan 2025 16:23:46 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[問題解決]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[備忘録]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=415</guid>

					<description><![CDATA[　どうも、皆様お疲れ様です。今回もプログラムに関連しての備忘録。（ゲームもしたい・・・A列車続きしたい・・・）自分が詰まったところは誰かが詰まることもあるはずということで、VisualStudioの文字コードに翻弄され続 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　どうも、皆様お疲れ様です。<br>今回もプログラムに関連しての備忘録。（ゲームもしたい・・・A列車続きしたい・・・）<br>自分が詰まったところは誰かが詰まることもあるはずということで、VisualStudioの文字コードに翻弄され続けた末の解決策の話。<br>では本題へ。</p>



<h3 class="wp-block-heading"><span id="toc1">どのような状況だったのか。</span></h3>



<p class="wp-block-paragraph">　まず今現在自分の状況から書いていきます。<br>IDE（統合開発環境）としてVisualStudioを用いてC/C++で自身の趣味を含んだ開発を行っております。スキル・技術としては正直3流以下で、ChatGPTの助けを借りながら理想に向けて邁進しておりまます・・・！<br>そんな中で恒久的にデータを保持する手段としてSQLデータベースの利用をしようと、検討の結果思い立ったのですが、そこが地獄の始まりでした・・・。</p>



<h3 class="wp-block-heading"><span id="toc2">SQLiteを使用して導入するまでは順調だったが・・・。</span></h3>



<p class="wp-block-paragraph">　このSQLデータベースをどういう風な意図で利用しようか<sup data-fn="e76438b3-fe4d-4af2-94cf-370776ea7c6c" class="fn"><a href="#e76438b3-fe4d-4af2-94cf-370776ea7c6c" id="e76438b3-fe4d-4af2-94cf-370776ea7c6c-link">1</a></sup>というと、”SQL文というコマンドによってデータベースを操作して<strong>データベースへのアクセスを一意なものにしちゃおう</strong>”ということと”自身でガバガバなデータ管理クラスをつくって<strong>無駄なデバッグに労力を割くのをやめよう</strong>”ということを考えたわけですね。あまりピンと来てない人向けに言いますと、Excelのような表形式にできる情報<sup data-fn="e3585179-bd28-4eb2-84b5-99da0ea3362c" class="fn"><a href="#e3585179-bd28-4eb2-84b5-99da0ea3362c" id="e3585179-bd28-4eb2-84b5-99da0ea3362c-link">2</a></sup>をデータベースで管理しようということです。<br>ライブラリはsqlite3と呼ばれるライブラリを導入しました。<br>他のSQLライブラリと比べてサーバーをつくらずとも、ローカルで完結して軽量なため、小規模でもし行くところまで行ったとしても中規模が限界な自分のプロジェクトにはぴったりな選択だったと思います。<br><br>SQL自体はそこかしこで使われるようなメジャーなデータベース言語だったので、文献も豊富ですし、GPTの回答も解決策となるようなものも多く実装は順調でした。そんな中で問題が出てきます。<br>それはINSERTで”<strong>文字列</strong>”として挿入したはずの要素がBLOB型（バイナリ）として保存されていたということです。（下記はsqlite3の関数ではなくSQL文での表記）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL" data-show-lang="1"><code>INSERT INTO NounDictionary (Name, Language, PartOfSpeech, Synonyms, Antonyms, RelatedNouns, Reference, Attributes, Description, IsTopicVisible)
VALUES (&#39;犬&#39;, &#39;ja&#39;, &#39;名詞&#39;, &#39;ワンコ,ドッグ&#39;, &#39;猫&#39;, &#39;猫&#39;, &#39;res/images/dog.png&#39;, &#39;{&quot;type&quot;: &quot;名詞&quot;, &quot;category&quot;: &quot;動物&quot;, &quot;traits&quot;: [&quot;忠実&quot;, &quot;可愛い&quot;]}&#39;, &#39;犬科の哺乳類。&#39;, 1);</code></pre></div>



<p class="wp-block-paragraph">上記のようなコードにおいて日本語部分のみ挿入前の形を保てませんでした。これを直そうと思って四苦八苦・・・。解決まで2,3日かけてしまいました。（会社だったらクビですね）</p>



<h3 class="wp-block-heading"><span id="toc3">結末は単純なことで解決へと・・・。</span></h3>



<p class="wp-block-paragraph">　そんなこんなでモチベーションも下がりつつあったのですが、ChatGPTの回答に文字コードが悪いんじゃないかという話がちらほら。それらの修正は効果がなかったのですが、そういえばとVisualStudioの標準の日本語文字の文字コードってなんかいろいろ引っかかるみたいな話何だっけ・・・、という朧げな記憶を引っ張りだしたどり着きました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++" data-show-lang="1"><code>    std::map&lt;std::string, std::string&gt; newElement = {
       {u8&quot;Name&quot;, u8&quot;犬&quot;},
       {u8&quot;Language&quot;, u8&quot;ja&quot;},
       {u8&quot;PartOfSpeech&quot;, u8&quot;名詞&quot;},
       {u8&quot;Synonyms&quot;, u8&quot;ワンコ,ドッグ&quot;},
       {u8&quot;Antonyms&quot;, u8&quot;猫&quot;},
       {u8&quot;RelatedNouns&quot;, u8&quot;猫&quot;},
       {u8&quot;Reference&quot;, u8&quot;res/images/dog.png&quot;},
       {u8&quot;Attributes&quot;, u8R&quot;({&quot;type&quot;: &quot;名詞&quot;, &quot;category&quot;: &quot;動物&quot;, &quot;traits&quot;: [&quot;忠実&quot;, &quot;可愛い&quot;]})&quot;},
       {u8&quot;Description&quot;, u8&quot;犬科の哺乳類。&quot;},
       {u8&quot;IsTopicVisible&quot;, u8&quot;1&quot;}
    };</code></pre></div>



<p class="wp-block-paragraph">　上記のような挿入する要素をu8のプレフィックスを接頭に付けて<sup data-fn="ac353f82-8f52-4051-af33-48600a2ff66d" class="fn"><a href="#ac353f82-8f52-4051-af33-48600a2ff66d" id="ac353f82-8f52-4051-af33-48600a2ff66d-link">3</a></sup>文字列の扱いを”UTF-8”にすることで、INSERTで挿入しても要素の名前がBLOB型にされることがなくなりました。<br>結論としてはVisualStudioで標準で扱う文字コードが”Shift-JIS”、SQLデータベースで扱う文字コードが”UTF-8”というだけの話だったんですね・・・。SQLはそりゃそうだって話だったんですけど、VisualStudioが標準そっちだったかというのは完全に抜けていましたね・・・。<br>そんなこんなでようやく迷宮から抜けられそうなのでここから開発を加速させたいですね・・・！</p>



<p class="wp-block-paragraph">またプロジェクトやファイルごとに扱う文字コードをUTF-8に変更する方法もありますが、検索した時にたくさん見たのでたぶん自分が書くよりも詳細な説明が載っているでしょう。もしくはChatGPTに聞いてもいいと思います！<br>余談ですが最近のChatGPT、プロジェクトでやりやすくなりましたよね。・・・ファイル読み込みや古いファイルの参照に弱いのはあいも変わらずですが・・・。</p>



<h3 class="wp-block-heading"><span id="toc4">自分が使っているSQL関連のあれこれについて（2つだけですが・・・）</span></h3>



<p class="wp-block-paragraph">　では最後に今自分が使っているSQL関連の便利なあれこれを２つだけ紹介して終わります。</p>



<p class="wp-block-paragraph">一つ目はVisualStudioに導入して使っているSQLite。<br><a rel="noopener" target="_blank" href="https://www.sqlite.org/download.html">https://www.sqlite.org/download.html</a>（自分は<a rel="noopener" target="_blank" href="https://www.sqlite.org/2025/sqlite-amalgamation-3480000.zip">sqlite-amalgamation-3480000.zip</a>をつかっています。目的ごとに違うので気になる人は調べてみてください。）<br>C++のコードでSQLを簡易に使えるのでSQLデータベース初心者におススメです。<br>前述の通り、オフラインでローカルのデータベースとして扱えるので小規模の開発に向いています。<br>逆にオンラインで多数からの接続を想定している場合には他のSQLライブラリの方が向いているかも・・・？<br>もう一つはDBファイルの中身を見れるDB Browser for SQLiteです。<br><a rel="noopener" target="_blank" href="https://sqlitebrowser.org/">https://sqlitebrowser.org/</a><br>ローカルにデータベースファイルが生成されるSQLiteではDBファイルを見ることが出来ます。<br>これを用いることでデバッグや開発がはかどります！<br>また開いたデータベースファイルに対してSQL文の直接実行もできたりするので、そこもいいですね。<br>ということでこれを新たな備忘録としたいと思います。<br>また見に来ていただけたら嬉しいです。それでは。</p>


<ol class="wp-block-footnotes"><li id="e76438b3-fe4d-4af2-94cf-370776ea7c6c">SQLがどういうものかというものを断言してしまうと、いろいろと語弊を生んでしまうので今回は自分が使うに至った理由を書いています。 <a href="#e76438b3-fe4d-4af2-94cf-370776ea7c6c-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="e3585179-bd28-4eb2-84b5-99da0ea3362c">ExcelのようなGUI（グラフィックで操作する）ではなく、CUI（コンソールでコマンドで操作）なので慣れるまで時間が必要でした・・・。 <a href="#e3585179-bd28-4eb2-84b5-99da0ea3362c-link" aria-label="脚注参照2にジャンプ">↩︎</a></li><li id="ac353f82-8f52-4051-af33-48600a2ff66d">応急処置的な扱いの方がいいのかな・・・とか、思ったり思わなかったり。<br>でもファイルやソリューション単位で変更すると今までのコードでエラーを起こすので不用意に全部統一するのはご法度ですわね・・・。 <a href="#ac353f82-8f52-4051-af33-48600a2ff66d-link" aria-label="脚注参照3にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>stdio.hってなんのことっていう気持ちだったころの話</title>
		<link>https://gamekineki.com/post-412/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Tue, 14 Jan 2025 10:58:32 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初心者]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[素朴な疑問]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=412</guid>

					<description><![CDATA[みなさま、遅ればせながら新年あけましておめでとうございます。ただでさえ更新頻度の少ない当ブログ・・・新年一回目はプログラミングに関してです。とはいえ私もすさまじく詳しいというわけではなく、ChatGPTによる出力を主とし [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">みなさま、遅ればせながら新年あけましておめでとうございます。<br>ただでさえ更新頻度の少ない当ブログ・・・新年一回目はプログラミングに関してです。<br>とはいえ私もすさまじく詳しいというわけではなく、ChatGPTによる出力を主としてその他のリファレンスを参照してのお話となります。詳しいリファレンスなどを読むときの抵抗を少しでも軽減できればいいなと思います。</p>



<p class="wp-block-paragraph">では本題へ・・・。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">stdio.hとは何ぞや？</a><ol><li><a href="#toc2" tabindex="0">最初に抱くであろう疑問</a></li><li><a href="#toc3" tabindex="0">stdio.hについて（本編）</a></li><li><a href="#toc4" tabindex="0">終わりに</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">stdio.hとは何ぞや？</span></h2>



<h3 class="wp-block-heading"><span id="toc2">最初に抱くであろう疑問</span></h3>



<p class="wp-block-paragraph">　プログラミング言語を触る中で比較的ライトな層には最近Pythonが主流であるとは感じていますが、それでも少し深堀してもう少し低レベルな言語<sup data-fn="3444f7a6-3428-40d2-b73c-99a51a0d228c" class="fn"><a href="#3444f7a6-3428-40d2-b73c-99a51a0d228c" id="3444f7a6-3428-40d2-b73c-99a51a0d228c-link">1</a></sup>を学ぶ時の主流としてはやはりC言語系統（C++やC＃を含む）になってくるんじゃないかなと思います。<br>そんな中でプログラミング初心者が最初に触れるであろうHelloWorldの文字列出力がありますよね。その中で一番上に＜stdio.h＞が見えていると思います。形式的にそうなんだろう<sup data-fn="6b7b3791-5ae8-4ba9-98b0-ba02d27142b4" class="fn"><a href="#6b7b3791-5ae8-4ba9-98b0-ba02d27142b4" id="6b7b3791-5ae8-4ba9-98b0-ba02d27142b4-link">2</a></sup>と、ひとまず書かれたこのヘッダーファイルについて何も知らないままを今回で卒業しましょう！</p>



<h3 class="wp-block-heading"><span id="toc3">stdio.hについて（本編）</span></h3>



<p class="wp-block-paragraph">　<code>&lt;stdio.h></code> は、C言語で標準入出力を扱うためのヘッダーファイルです。名前の由来としては&#8221;standard input output&#8221;の略です。読んで字のごとくというわけですね。（自分はいろいろ理解するまで字面が似ていたVisualStudioの何かの関連なのかと思っていました・・・。）<br>このヘッダーファイルには、ファイルやコンソールを使ったデータの入出力を行うための関数が定義されています。</p>



<h4 class="wp-block-heading">主な特徴と役割</h4>



<p class="wp-block-paragraph">主な役割としては以下。</p>



<ul class="wp-block-list">
<li>標準入出力機能を提供する。</li>



<li>C言語の基本機能であり、ほぼすべてのCプログラムで使用されます。</li>



<li><strong>Standard Input（標準入力）</strong>: 通常はキーボードからの入力を指します（例: <code>scanf</code> でユーザーからの入力を受け取る）。</li>



<li><strong>Standard Output（標準出力）</strong>: 通常はコンソールへの出力を指します（例: <code>printf</code> で文字や数値を表示する）。</li>



<li><strong>Standard Error（標準エラー出力）</strong>: エラー情報を表示する出力先。通常コンソールにエラーメッセージを出力します（例: <code>perror</code>）。</li>
</ul>



<p class="wp-block-paragraph">printf（）＝画面への文字列出力の関数も当然ながらこの中に含まれているので、これを最初にincludeする必要があったんですね・・・！</p>



<h4 class="wp-block-heading">主な関数</h4>



<p class="wp-block-paragraph">以下に、<code>&lt;stdio.h></code> に含まれる代表的な関数について概要だけ示しておきます。</p>



<h5 class="wp-block-heading">コンソール入出力</h5>



<ol class="wp-block-list">
<li><strong><code>printf</code></strong>
<ul class="wp-block-list">
<li>画面に文字列や数値を表示します。</li>



<li>使用例:<br><code>printf("Hello, World!\n");</code></li>
</ul>
</li>



<li><strong><code>scanf</code></strong>
<ul class="wp-block-list">
<li>ユーザーから入力を受け取ります。</li>



<li>使用例:<br><code>int x; </code><br><code>scanf("%d", &amp;x);</code></li>
</ul>
</li>
</ol>



<h5 class="wp-block-heading">ファイル操作</h5>



<ol class="wp-block-list">
<li><strong><code>fopen</code> / <code>fclose</code></strong>
<ul class="wp-block-list">
<li>ファイルを開いたり閉じたりします。</li>



<li>使用例:<br><code>FILE *fp = fopen("example.txt", "r"); </code><br><code>fclose(fp);</code></li>
</ul>
</li>



<li><strong><code>fread</code> / <code>fwrite</code></strong>
<ul class="wp-block-list">
<li>ファイルからのデータ読み書きを行います。</li>
</ul>
</li>



<li><strong><code>fprintf</code> / <code>fscanf</code></strong>
<ul class="wp-block-list">
<li>ファイルに対して書き込みや読み取りを行います。</li>
</ul>
</li>



<li><strong><code>fseek</code> / <code>ftell</code></strong>
<ul class="wp-block-list">
<li>ファイル内の位置を操作します。</li>
</ul>
</li>
</ol>



<h5 class="wp-block-heading">その他のユーティリティ</h5>



<ol class="wp-block-list">
<li><strong><code>gets</code> / <code>puts</code></strong>
<ul class="wp-block-list">
<li>文字列の入力や出力を行います。（<code>gets</code>は非推奨）</li>
</ul>
</li>



<li><strong><code>perror</code></strong>
<ul class="wp-block-list">
<li>エラーをコンソールに表示します。</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">重要な構造体</h4>



<ul class="wp-block-list">
<li><strong><code>FILE</code></strong>
<ul class="wp-block-list">
<li>ファイルを操作する際に使用する構造体で、<code>fopen</code> などの関数によって管理されます。</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc4">終わりに</span></h3>



<p class="wp-block-paragraph">　本当に何も知らずに使う状態から脱出してほしい、難しいリファレンスを読むことへの足掛かりになってほしい、そんな思いがあり今回の記事を書きました。今後もプログラミングをしている中で自分が”引っかかったこと”、素朴な疑問を記事にして、今回のような備忘録という名の肥やしも当ブログで増やしていきたいと思います。</p>


<ol class="wp-block-footnotes"><li id="3444f7a6-3428-40d2-b73c-99a51a0d228c">今回のことで言えば、Pythonより低レベルの階層（ポインタ操作等）にアクセスできる言語という意味 <a href="#3444f7a6-3428-40d2-b73c-99a51a0d228c-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="6b7b3791-5ae8-4ba9-98b0-ba02d27142b4">実際、この部分の中身を始めたてで十全に理解するのは難しいので知らないことを減らして知識を増やしてゆくことが大事。 <a href="#6b7b3791-5ae8-4ba9-98b0-ba02d27142b4-link" aria-label="脚注参照2にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
