Visual Studioではscanf関数はそのままでは使えません。使用したい方はソースコードの冒頭に#pragma warning(disable: 4996)を記述してください
元気なscanf関数
ピンポンぱんぽ~ん
ようこそ、蛇ショッピングセンターへいらっしゃいました。
突然ソーラーハウスに店内放送が響き渡る。
ソーラー 「な、なんだ」
お客様、当店では地域環境をまもるため植樹活動をおこなっております。
そのための募金をおこなっております。
ソーラー 「わあ、なんだかいいお話だね。」
アレサ 「まあ、本当」
ご協力いただけるお客様は
そちらに設置してあります蛇BOX
_
に募金をお入れください。
その際 募金金額は一口
A 1000000000000
B 50000000000
C 30000000
からお選びください。
ソーラー 「高いよ~~~。」
アレサ 「Aです。ソーラーさん」
みなさまのお手元の蛇BOX_にお入れください。
_
新種の蛇 「さあ、ソーラー この_だよ」
ソーラー 「そうか、じゃあ A とうちこむよ」
ぽちっと
A
笑顔でAをうちこんでみるソーラー
新種の蛇 「がくっ」
力なくテーブルからぶらさがる彼。
ソーラー 「なんなんだ~~~~~
だっ 大丈夫かい?」
あわてて尻尾をつまみあげる。
ソーラー 「わわ、どうしよう。どうしよう。」
アレサ 「0111110000・・・そう、ですね・・・。
このscanfさんのプログラムを調べてみましょう。」
ソーラー 「そうだね。」
アレサ
「では・・・このハサミでお蛇ちゃんをキットカットしましょう。」
新種の蛇 「むおお ま、待って
プログラムを調べるのなら
これ、これですよ~
#include <stdio.h>
int main(void){
int a;
printf("何か数値を入力してください。\n");
scanf ("%d",&a);
printf("入力した数値は%dです。\n",a);
return 0;
}
ソーラー 「コンパイルっ」
何か数値を入力してください。
_
ソーラー「ははあ、蛇BOX_があらわれたね。
プログラムを実行すると
printf("何か数値を入力してください。\n");の命令文
が実行されて
何か数値を入力してください。
の文字列が
コマンドプロンプト画面に表示される
で、そのあと
scanf ("%d",&n);
の命令文が実行されて
数値入力をうけつけるための
アンダーバー _がコマンドプロンプト画面にあらわれる
ってわけなんだ
この_に数値をキーボードから入力すればいいんだね。
何か数値入力されるまでは
アンダーバー _が点滅して数値入力待ち状態となっているわけだ。
そして
アンダーバー _に数値入力すると
さらに その次の命令文
printf("入力した数値は%dです。\n",a);
によって
入力された数値が出力されるっと。
たとえば
アンダーバー _に数値6を入力すると
入力した数値は6です。
と表示されるわけです。
では
ひらがな
円
をscanf関数によみこませてみると
printf結果は・・・
入力した数値4198575です。か・・・
(Visual Studioの場合は
入力した数値-858993460です。となります)
ふ~ん、 モンスター数値をみなれているので
さほど驚かないね。」
アレサ 「そうですね。なにかがおこっていますね。」
ソーラー 「では
Aをscanf関数によみこませてみるとprintf結果は・・・
入力した数値4198575です。
ははあ、わかってきた。
このプログラム
#include <stdio.h>
int main(void){
int a;
printf("何か数値を入力してください。\n");
scanf ("%d",&a);
printf("入力した数値は%dです。\n",a);
return 0;
}
において
scanf ("%d",&a);は入力された数値を、
整数の型int型に宣言された変数aにおさめるわけだ。
だから整数の型int型には整数値しかおさめられないので
円やAはおさめることができず
変数aは初期化されることはないので
変数aが初期化されないときに
変数aに最初から格納されている
モンスター数値4198575がでてくるわけだ。
Visual Studioの場合は
-858993460
がでてくるんだね
だから お蛇ちゃん 調子がわるくなったんだね。」
(秘密
こ・こ・で お買い物情報です
int a;
の
int型をchar型に
%d出力変換指定子を%c出力変換指定子に
変更したなら
scanf関数を実行した際
コマンドプロンプト画面から
半角数字
や
半角英字を
(コマンドプロンプト画面から入力する際はシングルクォーテーションで囲む必要はありません)
入力して
文字データとして
char型の変数aに
格納して
コマンドプロンプト画面に文字を表示することができます
が
とても特殊な使い方です
秘密情報です
普通 scanf関数はメモリに数値データ入力する場合に用いられます
solarplexussより)
アレサ 「ははあ、なるほど・・・」
新種の蛇scanf 「そうなんで~す 。もぞ、もぞ・・・
だから、おいしいものをたべさせてほしいんだ(^^)」
ぺろりんっ
まな板の上でもぞもぞ体を左右に揺らし喜ぶ彼。
ソーラー 「しょうがないなあ。もう」
新種の蛇scanfをよいしょっと抱きかかえる。
ソーラー 「まあ、解体するつもりは最初からなかったけどね。」
アレサ 「ほんとうです。」
___________________________________________________
ここでアンダーバー _に
10000円を入力してみると
printf出力結果は10000となります。
円が入っているのに無事に出力できています。
ふつうは
printf関数に10000円と円の文字がついている数値を入力しても
#include <stdio.h>
int main(void){
printf("入力した数値は%dです。\n",10000円);
return 0;
}
ファイル「C:/Users/solarplexus/AppData/Local/EasyIDEC/project/tttttt/main.c」の
「4行目」で記述エラーを発見しました。
unrecognized character \x89
(unrecognized characterとは認識できない文字という意味で
ここでは円をさしています。)
となりエラーになります。
ここがC言語の不思議なところですね。
でも、きっと理由があるのでしょう。
元気なscanf関数さん
よろしくね!
solarplexussより
お話を読み進めていくとこの理由が自然とわかってきます。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます