我試圖獲取用戶輸入的格式爲XXXXXXXXB的字符串,其中X是數字,B是字符。然後我想驗證輸入是正確的格式,並檢查字符,看看是否是A,B,C,D,所以我可以把正確的東西驗證C數組中的輸入並檢查char的值
問題我有我是如何檢查的價值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;
}
就在前面。記住C數組是基於零的。即一個N大小的數組的有效索引是'[0 ..(N-1)]'。假設你的輸入是'char [9]'兼容的(8位數字+ 1個特殊字符),所以你的數字檢查應該來自'[0..7]',你的特殊字符應該是'[8]'。 – WhozCraig
switch語句中的isalpha檢查也不應該存在。 –
和stdout上的'fflush()'是多餘的;它在printf調用中與換行符一起被刷新。並且不要使用'gets()',這是一個邪惡的函數,它已經從標準庫中棄用了。改用'fgets(input,sizeof(input),stdin)'。 – WhozCraig