怎样才能判断一个字符串是否是数字

biefanwole 2003-08-08 04:45:39
谢谢
...全文
34 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkhawk 2003-08-08
  • 打赏
  • 举报
回复
只能是挨个字符判断了,用isdigit函数,如果需要的话,考虑小数点,正负,以及科学计数法的情况
direstrait 2003-08-08
  • 打赏
  • 举报
回复
一个词法识别的问题.
数的一般表达式:
nat=[0-9]+
signedNat=(+|-)?nat
number=signedNat("."nat)?(E signedNat)?
然后就是一个构造自动机的问题,最简单的方法是用lex做一个词法分析器出来,大功告成.
当然,细节问题还是有点麻烦的.
GZCompiler 2003-08-08
  • 打赏
  • 举报
回复
如果只是判断整形啊什么的,对于字符串的所有字符使用isdigit判断即可。
但是现在复杂了,是表达式处理问题。
biefanwole 2003-08-08
  • 打赏
  • 举报
回复
TO hum109(dikikiller)
atof好像不行,例如“1978ato”的返回值是1978。

to xiaomimiya(xiaomimiya)
如果类似“12e-2”这样的字符串改如何判断呢?

有没有更好的方法?
ashchan 2003-08-08
  • 打赏
  • 举报
回复
对于该串中的每一个字符,使用isdigit(ctype.h)进行判断。
feibob 2003-08-08
  • 打赏
  • 举报
回复
转为整数或浮点数,不行就是非数字!!!!
xiaomimiya 2003-08-08
  • 打赏
  • 举报
回复
#include"stdio.h"
#include"string.h"
main()
{
char a[20];
int i=0;
gets(a);
while(a[i]!='\0'&&a[i]>47&&a[i]<58)
i++;
if(a[i]=='\0')
printf("yes\n");
else
printf("no\n");
getch();
}
其实就是上面的人的思路。
hum109 2003-08-08
  • 打赏
  • 举报
回复
用atof, atoi转化成整形或者浮点型试一下,
如果转换不了就会返回0
devzhao 2003-08-08
  • 打赏
  • 举报
回复
原始方法:逐个判断其ASCII码

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧