数字以外の文字をはじきたい。
Posted: 2017年11月16日(木) 23:52
質問です。
現在スタックに値を入れたり出したりする課題をやっているのですが、数値をスタックに入れるときのエラー耐性で苦戦しています。
具体的にはpush関数(数値をスタックに入れる関数)に数値以外の文字が入力された時にやり直させるというものです。
実行結果は以下の通りです。
実行結果を見るとちゃんと数字以外ははじいてくれているようですが肝心の数字まではじいてしまします。実行結果1を見るに判定どちらにもはじかれているので文字の数字として受け取ったものは数値として認識されないんでしょうか・・・。またどのように直したら正常に動くようになるか教えてください。
よろしくお願いします。
現在スタックに値を入れたり出したりする課題をやっているのですが、数値をスタックに入れるときのエラー耐性で苦戦しています。
具体的にはpush関数(数値をスタックに入れる関数)に数値以外の文字が入力された時にやり直させるというものです。
#incude<stdio.h>
#include<ctype.h>
#define stack_max 100
int stack[stack_max];
int sp=-1;
int push(int data)
{
if(isdigit(data)){
if(data<10){
printf("---------\n");
printf("push:%2d\n",data);
printf("---------\n");
if(sp < stack_max){
stack[sp] =data;
sp++;
return stack[sp];
}
return 0;
}
else
printf("---------------------------\n");
printf("一桁の数値を入力してください\n");
printf("---------------------------\n");
}
else
printf("---------------------------\n");
printf("数値を入力してください\n");
printf("---------------------------\n");
}
int main(void)
{
char t;
printf("格納する一桁の数字を入力してください:");
scanf("%s",&t);
push(t);
}
//実行結果1
格納する一桁の数字を入力してください:3
---------------------------
一桁の数値を入力してください
---------------------------
数値を入力してください
---------------------------
//実行結果2
格納する一桁の数字を入力してください:k
---------------------------
数値を入力してください
---------------------------
//実行結果3
格納する一桁の数字を入力してください:!
---------------------------
数値を入力してください
---------------------------
よろしくお願いします。