1

我试图让用户输入格式为 XXXXXXXXB 的字符串,其中 X 是数字,B 是字符。然后我想验证输入的格式是否正确并检查 Char 以查看是否为 A、B、C、D 以便我可以输出正确的内容

我遇到的问题是如何检查 char 的值?这是我的代码

#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

您可能需要考虑两件事-

1)检查正确的索引-array[9]10th index数组的值

2)检查是否区分大小写-bB. 因此,您可能希望在比较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 回答