识别C语言浮点数的识别程序
时间: 2023-12-10 17:04:35 浏览: 81
浮点数的DFA识别算法
以下是一个简单的C语言实现的浮点数词法分析程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int is_float(char* str) {
int len = strlen(str);
int i = 0;
int flag = 0; //标记是否有小数点
while(i < len){
if(isdigit(str[i])){
i++;
}else if(str[i] == '.' && !flag){
flag = 1;
i++;
}else{
return 0;
}
}
return 1;
}
int main(){
char input[100];
printf("请输入一个字符串: ");
fgets(input, 100, stdin);
char *p, *q;
p = input;
while (*p != '\0') {
if (isdigit(*p) || *p == '.') {
// 找到数字或小数点,往后扫描,直到找到不是数字或小数点的字符
q = p + 1;
while (*q != '\0' && (isdigit(*q) || *q == '.')) {
q++;
}
// 将这段字符拷贝到新的字符串中
int length = q - p;
char* temp = (char*)malloc(length + 1);
strncpy(temp, p, length);
temp[length] = '\0';
// 判断是否为浮点数
if (is_float(temp)) {
printf("%s是一个浮点数\n", temp);
}
free(temp);
p = q;
} else {
p++;
}
}
return 0;
}
```
程序首先从标准输入中读取一个字符串,然后逐个字符进行扫描。如果字符为数字或小数点,则往后扫描,直到找到不是数字或小数点的字符。然后将这段字符拷贝到新的字符串中,并判断是否为浮点数,如果是,就输出相应的提示信息。程序中的 `is_float` 函数与前面的例子中的相同,用于判断一个字符串是否为浮点数。
阅读全文