极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 38097|回复: 15

求助是否为数字的判断

[复制链接]
发表于 2015-4-20 16:33:40 | 显示全部楼层 |阅读模式
各位大大好,小弟求教~~
现从串口输入一串数据,包含数字和字母,例如:15AB56DF
如何判断他们是否是数字
如果是将数字部分存入char a[]={};
如果是字母将字母部分存入 char b[]='','';
例如:
15AB56DF
数字部分存入char a[] = {1,5,5,6};
字母部分存入char b[] = 'A','B','D','F';
麻烦各位大神了
回复

使用道具 举报

发表于 2015-4-20 17:01:23 | 显示全部楼层
一个一个的读,如果他的asc码值是48到58就是数字0到9,把它们写到字符数组a里,如果是大写字母的asc码的话就把它写到b里
回复 支持 反对

使用道具 举报

发表于 2015-4-20 17:41:00 | 显示全部楼层
同意楼上,每个字符都有ASCII码
回复 支持 反对

使用道具 举报

发表于 2015-4-20 17:42:05 | 显示全部楼层
C语言中,数字和字母所占空间不一样
回复 支持 反对

使用道具 举报

发表于 2015-4-20 23:51:13 | 显示全部楼层
suoma 发表于 2015-4-20 17:42
C语言中,数字和字母所占空间不一样

樓主是 "从串口输入一串数据", 接收到的都是字符, 数字和字母 都是一個字符.
回复 支持 反对

使用道具 举报

发表于 2015-4-21 11:45:36 | 显示全部楼层
本帖最后由 tsaiwn 于 2015-4-22 20:20 编辑

char gg[  ] = "15AB56DF#$abc";
void setup( ) {
   Serial.begin(9600);
   for(int i=0; i < strlen(gg); ++i) {
       char y = gg[ i ];
       Serial.print(String("")+"gg["+i+ "] = " + y + " is ");
       if( isdigit( y ) ) Serial.println(" a digit");
       else if( isupper( y ) ) Serial.println(" a Capital / uppercase Letter");
       else if( islower( y ) ) Serial.println(" a lowercase letter");
       else Serial.println(" one of some other character");
   }// for(
} // setup(
void loop( ) {;}
回复 支持 反对

使用道具 举报

发表于 2015-4-21 11:48:02 | 显示全部楼层
本帖最后由 tsaiwn 于 2015-4-22 20:24 编辑
tsaiwn 发表于 2015-4-21 11:45
char gg [ ] = "15AB56DF#$abc";
void setup( ) {
   Serial.begin(9600);


Re-post in code format
  1. char gg [ ] = "15AB56DF#$$abc";
  2. void setup( ) {
  3.    Serial.begin(9600);
  4.    for(int i=0; i < strlen(gg); ++i) {
  5.        char y = gg[ i ];
  6.        Serial.print(String("")+"gg["+i+ "] = " + y + " is ");
  7.        if( isdigit( y ) ) Serial.println(" a digit");
  8.        else if( isupper( y ) ) Serial.println(" a Capital / uppercase Letter");
  9.        else if( islower( y ) ) Serial.println(" a lowercase letter");
  10.        else Serial.println(" one of some other character");
  11.    }// for(
  12. } // setup(
  13. void loop( ) {;}
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 10:37:55 | 显示全部楼层
tsaiwn 发表于 2015-4-21 11:48
Re-post in code format

thk~ 我回去试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 10:38:12 | 显示全部楼层
谢谢各位大大,小弟回去试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 14:50:43 | 显示全部楼层
tsaiwn 发表于 2015-4-21 11:48
Re-post in code format

Arduino:1.5.5-r2 (Windows 7), 板:"Arduino Uno"

sketch_apr22a.ino: In function 'void setup()':
sketch_apr22a:6: error: invalid conversion from 'char' to 'const char*'
sketch_apr22a:6: error: initializing argument 1 of 'size_t strlen(const char*)'
sketch_apr22a:7: error: invalid types 'char[int]' for array subscript

大哥为什么会出现这个。。。编不过去
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 14:54:09 | 显示全部楼层
tsaiwn 发表于 2015-4-21 11:48
Re-post in code format

在char gg后面加了[]过了,我再试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 14:57:58 | 显示全部楼层
tsaiwn 发表于 2015-4-21 11:48
Re-post in code format

大哥能不能解说一下Serial.print(String("")+"gg["+i+ "] = " + y + " is ");
这句的意思呢
回复 支持 反对

使用道具 举报

发表于 2015-4-22 17:13:20 | 显示全部楼层
mostblack 发表于 2015-4-22 14:57
大哥能不能解说一下Serial.print(String("")+"gg["+i+ "] = " + y + " is ");
这句的意思呢

這個是利用了 String 的特性, 直接把 字串 及 數值 連成一個 String 輸出.

一開始的 String("") 是用作建立一個 String 的 暫存, 之後就變成是對 String class 的運算.
如果沒有了 String("") 就會變成是對 char* 的運算了.

String class 定義了 operation + 作為連接, 如果是 int type, 會自動變成 字串 再連上去.
否則, 如果用 char*, 是不能對 int 進行 + 的運算.

至於執行後的結果, 你應該可以看到吧.
回复 支持 反对

使用道具 举报

发表于 2015-4-22 20:19:55 | 显示全部楼层
mostblack 发表于 2015-4-22 14:54
在char gg后面加了[]过了,我再试试


本来有写 gg[  ]
贴上去后 [ 和 ]被吃掉了,
本来 gg [  i  ]  的 [  i ] 也因 [ i ]连一起被吃掉,
进去修该改了后者故意加空格, 没注意到前者 gg[ ] 也被吃掉  
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-24 13:38:28 | 显示全部楼层
Super169 发表于 2015-4-22 17:13
這個是利用了 String 的特性, 直接把 字串 及 數值 連成一個 String 輸出.

一開始的 String("") 是用作 ...

多谢大哥!~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 18:09 , Processed in 0.037242 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表