関数ポインタを使ったプログラミングをあまりやってこなかったので、少し遊んでいました。
(本当は参照リンクがあるので載せたかったのですがダメなんですね・・・)
(httpのhを省くという古の手法は何となく怖いのでやめときます)
#include <stdio.h>
void start(){
printf("Start.\n");
}
void save(){
printf("Save.\n");
}
void end(){
printf("End.\n");
}
void (*menu[3])() = {
start,save,end
};
int main(){
int i;
char buf[256];
while(1){
i = -1; //数以外が来たら取り込み失敗するので初期値0,1,2以外設定
printf("input:");
gets(buf);
sscanf(buf, "%d", &i); //整数じゃなく小数が来たら・・・
if( 0 <= i && i < 3){
menu[i]();
}
if( i == 2 ){
break;
}
}
return 0;
}
私が参照したプログラムはgetchar関数を使ったり、end関数でexitを入れたりしてたけど、遊びです。
(2021.9.5追記)
「gets関数はあまり使わない方が・・・」との声もありそうなので一応。
あくまで遊びのプログラムですし、流石に255桁以上の数字は打たないだろうということで今回は使いました。
気になる場合は
fgets(buf, sizeof(buf), stdin);
あたりで置き換えるかすればいいと思います。