验证C数组中的输入并检查char的值

时间:2013-10-30 16:37:31

标签: c

我正在尝试以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;
}

2 个答案:

答案 0 :(得分:0)

您可能需要考虑两件事 -

1)检查索引是否合适 - array[9]是数组10th index的值

2)检查区分大小写 - bB不同。因此,您可能希望使用ascii值进行比较,或者在switch

中进行比较之前将输入字符转换为小写字母

答案 1 :(得分: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; 
}