天国にいけるC言語入門 シーズン1 パソコン超初心者がゼロから東方風シューティングをつくる編 ver.0.4.15.789 RELIEF
☆コンピュータのメモリに格納された文字列データをコマンドプロンプト画面に出力表示するには%s出力変換指定子を使用します
☆コンピュータのメモリに格納された文字列データをコマンドプロンプト画面に出力表示するには%s出力変換指定子を使用します
ただいまー
solarplexussです。
今日も みなさん、 C言語で遊ぼう!😝。
じゃあ
まずは aをシングルクォーテーション(')で囲んで
文字データ'a'として
コンピュータのメモリに格納
そして
文字データ'a'を
%c出力変換指定子をつかって
同じくコンピュータのメモリに格納される
文字列データ"%c\n"の%cの部分に
とりこんで
a
を
コマンドプロンプト画面にprintf出力表示してみようかな・・・
るんるん♬
\(^o^)/solarplexussです。(^^)
#include <stdio.h>
int main(void)
{
printf("%c\n", 'a' );
return 0;
}
みなさん このプログラムを
キーボードでうちこんで実行すると
Visual Studio2018の場合
a
続行するには何かキーを押してください
Visual Studio2019の場合
a
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 9088) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
と表示されます。
ちゃんと
aの行
と
続行するには何かキーを押してください
の行
が
改行されてますね。
では次のプログラムはどうでしょう。
#include <stdio.h>
int main(void)
{
printf("%c\n", 'abc' );
return 0;
}
'abc'とうちこんでコンパイルしてみましょーう。」
ソーラー 「 solarplexussさん、何して るんるん で・す・か?」
solarplexuss 「い、いや 、天国にいけるC言語入門 シーズン1
パソコン超初心者がゼロから
東方風シューティングをつくる編 59話目を実況してるなう。」
ぶーにゃん 「うちらも登場にゃ~ん。」
マックス 「そうだ。みんなでレッツゴーだ。
きょうはどこの
ダンジョンを探索するんだ?」
てんC 「ファイトォ🔥」
ソーラー
「ああ。この続きですね。%c出力変換指定子
ですか
'abc'とうちこんでコンパイルしてみましょーう。 ですね。
私たちを "ぬけがけ" してずいぶん楽しそうですね。
ニコニコ😊ですね。
読者に実況ですか・・・・・」
solarplexuss 「はーい。」
ぶーにゃん 「では うちがコンパイルっと。」
#include <stdio.h>
int main(void)
{
printf("%c\n", 'abc' );
return 0;
}
プログラムの実行結果(EAZY IDECの場合)
ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/ooooo/main.c」の
「4行目」で記述エラーを発見しました。
警告
multi-character character constant
ビルド実行結果
(Visual Studio)の場合
ビルド正常終了しますが
プログラムの実行結果は
c
と表示され
思ったようにabcを
コマンドプロンプト画面に表示できません」
ぶーにゃん 「やっぱりコンパイルエラーがでるにゃん。
シングルクォーテーション' '内には一文字しか書き込めないにゃん。
ところで、
この%cのcって英語のcharacter(文字という意味)
だとおもうにゃん。」
ソーラー「あっ はは そういえばそうだね!」
マックス
「よーし、ではabcのように並んだ文字列を
コンピュータのメモリに格納して
printf出力表示するには・・
・・・
わっかるーCをみてみると・・・」
以下 わっかるーC
printf関数を使って
abcという文字列を文字列データとして
コンピュータのメモリに格納するには
ダブルクォーテーション" "でabcを囲んで
"abc"と表記します。
そしてコンピュータのメモリに格納された文字列データ"abc"を
コマンドプロンプト画面にprintf出力表示するには
%s出力変換指定子をもちいます
そのプログラムは次のようになります
#include <stdio.h>
int main(void)
{
printf("%s\n", "abc");
return 0;
}
コンパイル結果(EAZY IDECの場合)
ビルド結果(Visual Studio)の場合
abc
マックス「
printf("%s\n", "abc");
おおっ
printf("%c\n", 'a' );とくらべてみると
1文字aが' '(シングルクォーテーション)で囲まれていたものが
文字列abcでは" " (ダブルクォーテーション)
で 囲まれているなあ。」
ソーラー 「プログラムを実行すると
abc
と
コマンドプロンプト画面に表示されました。
printf("%s\n", "abc");
が実行されると
コンピュータのメモリに文字列データ
"abc"
と
同じく
コンピュータのメモリに文字列データ
"%s\n"
が格納されることになります
この
文字列データ
"abc"
と
文字列データ
"%s\n"
のデータが
組み合わされてもちいられて
abcがコマンドプロンプト画面に
表示されることになります
あたかも
printf("%s\n", "abc");
は
%sの部分に"abc"がとりこまれる形
つまり
"abc\n"が記述されている
printf("abc\n");
が記述されているのに等しくなるというわけです・・・」
マックス 「しーーーーーん。」
ぶーにゃん 「しーーーーーん。」
てんC 「はいC(^_^)/☆☆ー」
ソーラー「おいC(^_^)/☆☆ー」
てんC 「ちょっといってみたかったのです。」
マックス 「あのー これ
printf("abc\n");
と
printf("%s\n", "abc");
でなにかプログラムの実行結果に違いがあるんでしょうか・・・?
プログラムの実行結果に
abcと表示したいだけなら%sを使って
printf("%s\n", "abc");
と記述しなくても
printf("abc\n");
だけでいいのでは・・・
%s出力変換指定子はなんのためにあるんだ・・・?」
ぶーにゃん 「その違いとは・・・」
マックス 「はい、次」
切り替えの早いマックスでした。
😊😊😊
%s出力変換指定子は後のエピソードで大活躍しちゃうぞ
solarplexussより
ソーラー「いやあ、まあ、こんなこともできるんだよ~」
#include <stdio.h>
int main(void)
{
printf("%sはアルファベットです\n", "abc");
return 0;
}
プログラムの実行結果
abcはアルファベットです
マックス「文字列データ"abc"が
文字列データ
"%sはアルファベットです"
の中の%sにとりこまれている!」
ソーラー「そうなんです おもしろいよね。
だからこんなこともできます。
#include <stdio.h>
int main(void)
{
printf("abc%sghiはアルファベットです\n", "def");
return 0;
}
コンパイル結果(EAZY IDECの場合)
ビルド結果(Visual Studio)の場合
abcdefghiはアルファベットです
マックス「おおぅ 文字列が1体化した
どこがつなぎ目か全く分からない
これゲームでつかえそうだな・・・」
ソーラー「ええ😊
そうですね
ところで
そういえば
勇者 マックス よ
マックスはレベルが10になった
マックスはやくそうをつかった
王様「おおう マックスょぉ~ 元気にしとるかい」
こんな文章をRPGゲームでみかけますね。
😊」
マックス「これらの文章は
みればわかるように
RPGゲームで最初に自分で主人公の名前を
マックスと決定して名前設定欄にうちこんだら
後に出てくる文章の中に出てくる主人公の名前の部分が
全部 マックス ってなるやつだな
もしかしたら
これらの文章は
%s出力変換指定子が
文章の中にかきこまれていて
あとから
ユーザーが決めて
キーボードから名前設定欄に打ち込んだ名前
が
なにがしかの方法で
printf関数の第2引数に渡され
その後
%s出力変換指定子の部分にとりこまれてるんじゃないか?
まあこんな感じじゃないか?
printf("勇者 %s よ\n",マックス);
printf("%sははレベルが10になった。\n",マックス);
printf("%sはやくそうをつかった。\n",マックス);
printf("%sはとってもかっこいいです\n",マックス);
↑
どのようにマックスが
printf関数の第2引数に渡されるのかは不明だが・・・
最初から
次のプログラムのように
文章のなかの主人公の名前の部分に
マックスと記述してあったら
#include <stdio.h>
int main(void)
{
printf("マックスはとってもかっこいいです\n");
printf("マックスは10G手に入れた。\n");
printf("マックスは王城に向かった。\n");
printf("マックスはLEVEL UPした。\n");
return 0;
}
ゲーム内では
マックスはとってもかっこいいです
マックスは10G手に入れた。
マックスは王城に向かった。
マックスはLEVEL UPした。
が表示されて
主人公の名前はマックスのままで
主人公の名前を
ソーラー
や
ぶ~にゃんに変えられない
つまり
主人公の名前がマックスと最初からきまっていて
主人公の名前を自分で決められないタイプのゲームとなるわけだ。」
ソーラー「あっ ほんとうだ!」
マックス「ああっ ほんとうだ!!
!!
自分でいっておいて
俺はぁ いまごろ気付いたんか~い ゼロポイン~~トぉ」
ぶーにゃん「にゃ~」
てんC 「プログラミング言語の
いろいろな機能を
つかって
ゲームはつくられていそうですね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます