c语言中如何完整的判断输入的字符串是浮点数(代码)

输入的字符串有可能是123.34.34或者123a.312.a3,,希望是具体代码,谢谢... 输入的字符串有可能是 123.34.34 或者123a.3 12.a3,,希望是具体代码,谢谢 展开
 我来答
金色潜鸟
推荐于2018-04-12 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5538万
展开全部
如果字符串已放在 char 数组 str[] 里,例如
char str[]="123.34.34";
double d;
if ( sscanf(str,"%lf",&d) != 1 ) printf("wrong floating data\n");
追问
现输入 现判断的  没有放入数组中
追答
输入流里的内容本身都是字节流,天然地是“字符串”。
按 %lf 读入 就是转换为 浮点数,不符合浮点数规定的 “字符串”将导致 读的 失败,
符合浮点数规定的 “字符串”,读就能成功。所以 用 读 和 是否成功就可以判断了。

现键盘输入:
double d;
if ( scanf("%lf",&d) != 1 ) printf("wrong floating data\n");

现文件输入:
FILE *fin;
double d;
fin = fopen(.....); // 自己写全
if ( fscanf(fin,"%lf",&d) != 1 ) printf("wrong floating data\n");
匿名用户
2014-04-17
展开全部
最简单普遍的方法,循环 + 判断,编译器前端也常见此判断字符串的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
毛奥奇
2018-05-25
知道答主
回答量:7
采纳率:0%
帮助的人:4697
展开全部
#include <stdio.h>

enum SYMBOL
{
positive_, // 正数
negative_, // 负数
};
bool bIsDouble(const char *pSrc){
int nDot = 0;
int nFlag = 0;

const char *pTmp = pSrc;
SYMBOL symbol = positive_;

if('-' == *pTmp){
symbol = negative_;
pTmp++;
}
if('+' == *pTmp){
symbol = positive_;
pTmp++;
}

while('\0' != *pTmp){
// 假若找到小数点
if('.' == *pTmp){
if(nDot >= 1){
return false;
}
else{
nDot++;
pTmp++;
continue;
}
}

// 假若不为0-9之间的值,就不是double类型
if(*pTmp < '0' || *pTmp > '9'){
return false;
}

pTmp++;
}

return true;
}

int main()
{
char szInput[256]="";
while('q' != szInput[0]){
printf("Input string:");
scanf("%s",szInput);

if(bIsDouble(szInput)){
printf("是浮点数\n\n");
}else{
printf("不是浮点数\n\n");
}
}

return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-04-17
展开全部
要优化或你遇到的串有什么特殊划律要优化就另说,手机党代码无力
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式