数字入力の文を考えてみたものの暴走モード C言語適当練習日記 第4回
あみだくじをステージや選択するくじの本数について、数字で選択させればいいじゃないということで、独習C 第4版を眺めながら、scanfやら、whileやらを使って、数字選択の関数を作ってみたのだった。
scanfを使うと、visual C++さんから警告を受けましたとさ。なんか安全じゃないらしい。
そういうのを無視して、色々な数値を入れてみたものの…
整数を打ち込む分には問題はないものの、例えば、0.0、0.1、0.9、4.1、5.5やらの、whileの条件の範囲の小数を打ち込むと、思いっきり暴走する。ちなみに、1.1やら、2.1やら3.1やらの場合は、小数点以下切り捨てで成立する。
はてさてどうしたものやら。気が向けば次回に続く。
[c language="++"]#include <stdio.h>
#include "amida.h"// amida.hはあみだくじ作成用の自作ヘッダファイル
int main(void)
{
int decide_number; // 選択決定した番号
decide_number = SelectNumber("1から3までの番号を選択してください。(小数点以下切捨)", 3);
// char filename[20] ="mapdata00.txt"; //マップデータの名称を文字列として代入今回はコメントアウト
// MapLoading(filename); //ファイル読み込み関数。しばらくこれはコメントアウト。
printf("今押された数値は %d です。",decide_number);
return 0;
}[/c]
[c language="++"]#include <stdio.h>
int SelectNumber(char message[], int numbermax){
int number=0; //scanfで打ち込む数字、初期値ゼロ。
// もし打ち込んだ数字が1からnumbermaxまでの数字じゃないときはループ。
// ただし、このままだと例えば0.0やら0.1やら0.9やら4.1やら5.5と打ち込んだときに暴走する様子。どう対策すべきか…
// scanfを使うと、visual c++だと警告が出る。多分、上の話がらみで安全じゃないよってことなのだろう。
while((number<1) || (number>numbermax)){
puts(message); // 持ってきたメッセージを表示
scanf("%d",&number); //打ちこんだ数字を整数へ
}
return number;
}[/c]
Pick Up
- 1
-
Macbook air Mid2012 のバッテリー交換を行おうとして右往左往したときのログ(前編)
やったときのログシリーズ、バッテリー交換編
- 2
-
Macbook Air Mid2012 のバッテリー交換をしたときのメモ(後編)
バッテリー交換後編。