C_and_CPP 板


LINE

※ 引述《shimii (溶化了)》之铭言: : 我想要 if(*p=='a-z'||*p=='A-Z') : 也就是说只要*p=a-z或是A-Z就会继续下去做 : 可是我要编译的时候他却不给我过 NO,你不可以这样写,这是C/C++本身的限制,他语法没有提供你指定一范围内的 ASCII Code。 而单引号内也只能摆「一个」字元,像是: 'a' 指小写a的ASCII码 'A' 指大写A的ASCII码 '8' 指数字8的ASCII码 ',' 这是浮号「,」的ASCII码 ' ' 这是空白字元的ASCII码。 但你不能写'a-z'这种写法。想要比对一个范围内的ASCII字元,你需要这精美的ASCII码表 (通常计概书或程设书也会附) http://en.wikipedia.org/wiki/ASCII 像是你比对「e」ASCII码我们查到是101,那你能这样写(假设你要与一char变数ch比对) if(ch == 101) 或是 if(ch == 'e') 第一个写法其实作了些转换,在C/C++中直接写数字编译器会预设为int,而你与一char变 数比较,ch会被往上转成int型态再作比较,不过这是细节就是。个人推荐第二种写法,比 较好读。 如果你想比对一个范围内的字元,比如说,bcd三个ASCII,b == 98, d == 100,那你可以 这样写 if(ch >= 98 && ch <= 100) 或是 if(ch >= 'b' && ch <= 'd') 而像你原题的要求。那会是 if((ch >= 97 && ch <= 122) || (ch >= 65 && ch <= 90)) 更易读的写法 if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <='Z')) 注意在ASCII中,小写字母的ASCII码要比大写字母要「大」 以上是自己写的作法,C的标准函式库中有提供一系列捡查ASCII字元的函式 (ctype.h) : 请问要怎麽改才对呢? : 还有我想用if比对出特殊字元要怎麽写? : 例如问号.逗号.之类的符号 : (空白也算)特殊字元很多..难道要一个一个打吗= ="? : 有没有什麽方法....教一下 谢谢(躬 如果你要比对一组ASCII字码不相邻的字码,真的就只能用一个一个打了(爆) 不过有简化的作法,比如说自定资料结构与一组函式把你要比对的字元塞进资料 结构中,再用你自己写的函式去简查。 如果你有用C++,标准函式库有提供Set(集合),你可以把你要比对的字元塞进去, 再用其提供的捡查操作去捡查。 : 另外问一下 : 我想在程式中间忽然插一句*p=f; : 可是他也不给我过 : 还是说一定要在一开始宣告的时候就直接把他指定进去? : cher *p=f; 你这行的意思是把p指向某变数「f」内容数字的位置。 -- 此人使用掉到马桶的C++ Primer 4ed --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.209.189.4 ※ 编辑: doomleika 来自: 210.209.189.4 (04/05 18:30)
1F:推 jaw109:有够详细,给你个推 XD 04/05 18:55
2F:→ slalala:p指向某变数「f」内容数字的记忆体位置!? 04/05 19:14
3F:→ shimii:写的好详细 完全董了:) 谢谢 04/05 19:18
4F:→ shimii:p才是变数@@ 讲颠倒了 04/05 19:19
5F:推 slalala:P不是变数 *p指标吧?! f才变数?! 这段连结原po写在函式?! 04/05 19:28
6F:→ shimii:我只知道*p是指标变数..要在一开始宣告 orz 04/05 19:37
char* p是一个指标,我们假设f是char。 程式片段如下 char f = 'X'; char* p = f; 还没进入程式前: 名称 型态 值 位置 f char 未初始 未初始 p char* 未初始 未初始 跑到char f = 'X'; //PS, 「0x」开头的数字是指十六进位 名称 型态 值 位置 f char 'X'(0x58) 0xA001 //位置可能每次不同 p char* 未初始 未初始 跑到char p = f; //要说一下,通常到这边是不会允许的,compiler应该会说 //"Can not convert char to char*"之类的讯息,这是好事, //如果compiler让你这样作,在使用*p时会用到不属於你程式 //的资料,通常会有「本程式发生错误即将关闭」,倒霉一点 //就是程式安静的取用到不属於他的资料,然後你会发现你的 //程式行为莫名奇妙,然後debug一两个小时才发现你犯了个愚 //蠢的错误 名称 型态 值 位置 f char 'X'(0x58) 0xA001 p char* 0x0058 0xA002 //位置每次都可能不同 正常的情况应该是这样 char f = 'X'; char* p = &f; //注意那个& 还没进入程式前: 名称 型态 值 位置 f char 未初始 未初始 p char* 未初始 未初始 跑到char f = 'X'; //PS, 「0x」开头的数字是指十六进位 名称 型态 值 位置 f char 'X'(0x58) 0xA001 //位置可能每次不同 p char* 未初始 未初始 跑到char p = &f; 名称 型态 值 位置 f char 'X'(0x58) 0xA001 //位置可能每次不同 p char* 0xA001 0xA002 ^^^^^^^ ※ 编辑: doomleika 来自: 210.209.189.4 (04/05 20:02)
7F:推 doomleika:这样讲可能不容易理解,想要live与程式记忆体SNG 04/05 20:05
8F:→ doomleika:请开你的debugger(除错器)捡查 04/05 20:06
9F:推 slalala:对嘛~所以我会以为这段程式码在函式里面~ 04/05 20:14
10F:→ slalala:简单说就是把f='X'的f的记忆体位置复制给p 04/05 20:15
11F:→ doomleika:no, 原po的那个意思我想是把ASCII码当成记忆体存进去 04/05 20:22
12F:推 slalala:所以方法几乎错了?? 指标有时候很难懂/ \ 04/05 20:23
13F:推 shimii:所以关键是那个&就是了@@ 又上了一课!谢拉~XD 04/05 20:25
14F:推 slalala:建议先知道&的意思喔 04/05 20:29
15F:→ PsMonkey:推内容也顺便推签名档 04/05 21:49
16F:推 compound:推一下~ :) 04/06 16:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP