関数ポインタとコマンドライン引数の組み合わせのプログラムについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hase

関数ポインタとコマンドライン引数の組み合わせのプログラムについて

#1

投稿記事 by hase » 14年前

下のプログラムを下の条件でコマンドライン引数を用いて書き換えたいのですが、なかなかうまくいきません。回答お願いします

<条件>
コマンドラインの第 1 引数は、-a, -d, -l, -u のいずれかで、入力必須とする。
コマンドラインの第 2 引数は、チェック対象となる 1 つの文字とする。
コマンドライン引数が適切でない場合、および、エラーがある場合は、使い方を表示する。


<もとのコード>
#include <stdio.h>
#include<ctype.h>

char *isalpha_p(void) {
return "an alphabet";
}
char *isdigit_p(void) {
return "a digit";
}
char *islower_p(void) {
return "lowercase";
}
char *isupper_p(void) {
return "uppercase";
}

int main(void)
{
int (*p[])(int c) = {isalpha, isdigit, islower, isupper};
char *(*q[])(void)={isalpha_p, isdigit_p, islower_p, isupper_p};

int i;
char c;

printf("0: isalpha, 1: isdigit, 2: islower, 3: isuppper ? ");
scanf("%d", &i);

if((i>=0)&&(i<=3)){
printf("char = ");
scanf(" %c", &c);
if(p(c)) {
printf(" %c is %s\n", c, q());
}else{
printf(" %c is NOT %s\n", c, q());
}
}
return 0;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 関数ポインタとコマンドライン引数の組み合わせのプログラムについて

#2

投稿記事 by softya(ソフト屋) » 14年前

フォーラムルールをまず確認して下さい。
http://dixq.net/board/board.html
投稿前チェックリストに従っているかも十分にチェックした上で投稿をしているかの確認もお願いします。

[補足] なかなかうまくいかないコードも投稿して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る