1

X が数字、B が文字である XXXXXXXXB 形式の文字列のユーザー入力を取得しようとしています。次に、入力が正しい形式であることを検証し、Char をチェックして、A、B、C、D であるかどうかを確認して、正しいものを出力できるようにします。

私が抱えている問題は、どのように文字の値を確認するのですか?? これは私のコードです

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void validate(char array[]){
int i=0;
for(i=0;i<9;i++){
    if(isdigit(array[i])){
    printf("Valid int %d at %d\n",array[i],i);
    }

    else if(isalpha(array[i])){
    printf("Valid alpha %c at %d\n",array[i],i);

        switch(isalpha(array[9])){
        case 'a':
            printf("Char a");
            break;
        case 'b':
            printf("Char b");
            break;
        case 'c':
            printf("Char c");
            break;
        case 'd':
            printf("Char d");
            break;
        }
    }

}
}

  int main(void) {
printf("Please Enter a string in format xxxxxxxxb x=digit b=char\n");
fflush(stdout);
char input[9];

gets(input);
validate(input);

return 0;
}
4

2 に答える 2

0

あなたは2つのことを考慮したいかもしれません-

1)適切なインデックスを確認します-配列array[9]の値です10th index

2)大文字と小文字が区別されていることを確認します-bは とは異なりBます。したがって、比較するascii前に、値を使用して比較するか、入力文字を小文字に変換することができます。switch

于 2013-10-30T16:56:22.650 に答える
0

配列内の正しい場所をチェックしていません。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void validate(char array[]){
int i=0;
for(i=0;i<8;i++){
if(isdigit(array[i])){
printf("Valid int %d at %d\n",array[i],i);
}

else if(isalpha(array[8])){
printf("Valid alpha %c at %d\n",array[i],i);

    switch(isalpha(array[9])){
    case 'a':
        printf("Char a");
        break;
    case 'b':
        printf("Char b");
        break;
    case 'c':
        printf("Char c");
        break;
    case 'd':
        printf("Char d");
        break;
    }
}

}
}

int main(void) {
printf("Please Enter a string in format xxxxxxxxb x=digit b=char\n");
fflush(stdout);
char input[9];

gets(input);
validate(input);

return 0; 
}
于 2013-10-30T16:57:13.530 に答える