- ベストアンサー
初心者です。
お世話になっています また、みなさんのお力をお貸しください。 いま、わからないところは、 例:Aに "0000" や "001" や "-01"- や "--1" などの整数以外の入力(マイナスと小数点は、入力可能とする)が おこなわれた時、にエラーとしてはじきたいのですが、はじけない です。 /* * ソース名:kadai001.c * ソース機能の説明:入力された二つの文字の比較 */ #include <stdio.h> #include <ctype.h> #define MAX 12 /* 読み込み文字数 */ /* 関数 Maxof() * 機能 入力されたAとBの値の大小関係を表示 * ・AはBより大きい場合 * ・AはBより小さい場合 * ・AはBが同じの場合 * 引数 x Aの値 * y Bの値 * 戻り値 無し */ void Maxof(char *x, char *y) { if (strcmp(x , y) == 0){ /* AはBが同じの場合 */ printf("A(%s)はB(%s)と同じ\n", x, y); } else if (strcmp(x , y) > 0){ /* AはBより大きい場合 */ printf("A(%s)はB(%s)より大きい\n", x, y); } else { /* AはBより小さい場合 */ printf("A(%s)はB(%s)より小さい\n", x, y); } } /* 関数 NuryokuA() * 機能 Aの値の入力を行う * ・エラー1場合 * ・エラー2場合 * ・エラー3場合 * 引数 na Aの値 * 戻り値 0 */ char NuryokuA(char *na) { char temp_na[MAX]; /* Aの値 */ char remit_na; /* 格納する文字の制限 */ do {/* Aの値がエラー文字の場合はループ */ printf("Aの値を入力してください。:"); if (fgets(na, sizeof na, stdin) == NULL) return 1; }while (sscanf(na, " %[-.0123456789] %c", temp_na, &remit_na) != 1 || Error_syori( na ) == 1 || strlen(temp_na) != MAX); return 0; } /* 関数 NuryokuB() * 機能 Bの値の入力を行う * ・エラー1場合 * ・エラー2場合 * ・エラー3場合 * 引数 nb Bの値 * 戻り値 0 */ char NuryokuB(char *nb) { char temp_nb[MAX]; /* Bの値 */ char remit_nb; /* 格納する文字の制限 */ do {/* Bの値がエラー文字の場合はループ */ printf("Bの値を入力してください。:"); fgets(nb, sizeof nb, stdin); }while (sscanf(nb, " %[-.0123456789] %c", temp_nb, &remit_nb) != 1 || strlen(temp_nb) != MAX); return 0; } int main(void) { char A_data[MAX]; /* Aの値 */ char B_data[MAX]; /* Bの値 */ NuryokuA(A_data); NuryokuB(B_data); Maxof(A_data, B_data); return 0; }
お礼
回答有難うございます。 このような感じなのですが、入力時に”000””010””0-1”といったエラー対応をしたかったんです。 やはり、”000””010””0-1””0000.1”といったイレギュラー入力をはじくことは難しいのでしょうか?