輸入123、+123、-123、(空格)+123,返回是有效整數(shù);輸入123.4、.5、-.5、+.5、(空格)0.2,返回的是有效double型;輸入123.4.5.6、f123、-(空格)0.2、-0.(空格)2、0.+2等返回的是無效數(shù)據(jù)。我的代碼如下,思路不成熟,所以效果沒達(dá)到,麻煩高手把把關(guān)。int main(int argc, char **argv){char buffer[LINELEN];char *fgets_rtn = NULL;int i;int point_flag = 0;for ( i = 0; buffer[i] != 0 ;){fgets_rtn = fgets(buffer, LINELEN, stdin);if ( NULL == fgets_rtn ){return 0;}if ( '\n' == buffer[strlen(buffer) -1]){buffer[strlen(buffer) -1] = '\0';}if (i==0&&(isdigit(buffer[i]) == 1||isspace(buffer[i]) == 1||buffer[i]=='+'||buffer[i]=='-')){i++;}if (buffer[i]=='.'){i++;point_flag++;}if (isdigit(buffer[i]) == 1){ i++;if (point_flag == 1){printf( "%s is a valid double\n", buffer);}if (point_flag > 1){printf( "%s is not a valid number...\n", buffer);} if (point_flag == 0){printf("%s is a valid integer\n",buffer);}}else{printf("%s is not a valid number\n",buffer);}}return 0;}
2 回答

呼如林
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個贊
抽出來判斷部分。
int isValidInt( char * str) { while ( isspace (str) || *str == '\0' ) ++str; if (*str == '\0' ) return 0; if (*str == '+' || *str == '-' ) ++str; while (*str != '\0' ) { if (! isdigit (*str)) return 0; ++str; } return 1; } |
大概這樣。
- 2 回答
- 0 關(guān)注
- 97 瀏覽
添加回答
舉報(bào)
0/150
提交
取消