求助是否为数字的判断
各位大大好,小弟求教~~现从串口输入一串数据,包含数字和字母,例如:15AB56DF
如何判断他们是否是数字
如果是将数字部分存入char a[]={};
如果是字母将字母部分存入 char b[]='','';
例如:
15AB56DF
数字部分存入char a[] = {1,5,5,6};
字母部分存入char b[] = 'A','B','D','F';
麻烦各位大神了 一个一个的读,如果他的asc码值是48到58就是数字0到9,把它们写到字符数组a里,如果是大写字母的asc码的话就把它写到b里 同意楼上,每个字符都有ASCII码 C语言中,数字和字母所占空间不一样 suoma 发表于 2015-4-20 17:42 static/image/common/back.gif
C语言中,数字和字母所占空间不一样
樓主是 "从串口输入一串数据", 接收到的都是字符, 数字和字母 都是一個字符.
本帖最后由 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( ) {;}
本帖最后由 tsaiwn 于 2015-4-22 20:24 编辑
tsaiwn 发表于 2015-4-21 11:45 static/image/common/back.gif
char gg [ ] = "15AB56DF#$abc";
void setup( ) {
Serial.begin(9600);
Re-post in code formatchar 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( ) {;}
tsaiwn 发表于 2015-4-21 11:48 static/image/common/back.gif
Re-post in code format
thk~ 我回去试试 谢谢各位大大,小弟回去试试 tsaiwn 发表于 2015-4-21 11:48 static/image/common/back.gif
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' for array subscript
大哥为什么会出现这个。。。编不过去
tsaiwn 发表于 2015-4-21 11:48 static/image/common/back.gif
Re-post in code format
在char gg后面加了[]过了,我再试试
tsaiwn 发表于 2015-4-21 11:48 static/image/common/back.gif
Re-post in code format
大哥能不能解说一下Serial.print(String("")+"gg["+i+ "] = " + y + " is ");
这句的意思呢 mostblack 发表于 2015-4-22 14:57 static/image/common/back.gif
大哥能不能解说一下Serial.print(String("")+"gg["+i+ "] = " + y + " is ");
这句的意思呢
這個是利用了 String 的特性, 直接把 字串 及 數值 連成一個 String 輸出.
一開始的 String("") 是用作建立一個 String 的 暫存, 之後就變成是對 String class 的運算.
如果沒有了 String("") 就會變成是對 char* 的運算了.
String class 定義了 operation + 作為連接, 如果是 int type, 會自動變成 字串 再連上去.
否則, 如果用 char*, 是不能對 int 進行 + 的運算.
至於執行後的結果, 你應該可以看到吧. mostblack 发表于 2015-4-22 14:54 static/image/common/back.gif
在char gg后面加了[]过了,我再试试
本来有写 gg[]
贴上去后 [ 和 ]被吃掉了,
本来 gg 的 也因 [ i ]连一起被吃掉,
进去修该改了后者故意加空格, 没注意到前者 gg[ ] 也被吃掉:( Super169 发表于 2015-4-22 17:13 static/image/common/back.gif
這個是利用了 String 的特性, 直接把 字串 及 數值 連成一個 String 輸出.
一開始的 String("") 是用作 ...
多谢大哥!~~
页:
[1]
2