ま総研2000(まどの総合研究所ver.5.1)

みんながみんなその物事に興味があると思っちゃいけないよという精神で綴る備忘録

数字入力の文を考えてみたものの暴走モード 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]

 - C言語練習