作者Holffman (Holffman)
看板C_and_CPP
標題[問題] 字元轉數字函數
時間Mon May 13 20:38:25 2019
小弟目前想寫一個字元轉數字的函數f(char),像是f(A)=0,f(B)=1,...,f(Z)=25這
樣,原本是打算用先將字元轉成int後,在使用函數判斷它轉成整數的範圍,然後再做
處理,但卻發現他會輸出兩個函數值(結尾的'\0'也會被計算),想請問各位前輩是否
有方法做到上述函數的功能,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.141.96
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1557751107.A.2FC.html
1F:→ hsnuyi: 標題寫字串 內文寫字元 到底是字串還是字元? 05/13 20:52
2F:→ hsnuyi: 字元直接 c - 'A' 不就好了 05/13 20:54
※ 編輯: Holffman (111.251.141.96), 05/13/2019 21:41:27
標題有錯,已經改正。我有那樣試過,但編譯器還是會跑出不相關的數字,還是是因為
編譯器的問題(我用xcode)?謝謝
※ 編輯: Holffman (111.251.141.96), 05/13/2019 21:42:58
3F:推 Schottky: 因為你寫錯了。為什麼自己錯都要第一個怪編譯器 XDDDD 05/13 21:53
痾 我只是想說會不會是那樣的問題,小弟C新手,還請S大賜教,謝謝。
※ 編輯: Holffman (111.251.141.96), 05/13/2019 21:57:44
4F:→ Lipraxde: 那你附個 code 啊 05/13 22:07
int sti(char word){
int value=(int)word;
if(value>=97){
value-=51;
}
else{
value-=65;
}
return value;
};
void main(void){
char a;
scanf("%c", &a);
printf("%c=%d", a, sti(a));
return 0;
}
如果輸入是大A,輸出會變成
A=0
=-55
※ 編輯: Holffman (111.251.141.96), 05/13/2019 22:19:47
5F:推 b0920075: char也是數值直接比較就好了,你幹嘛轉成int再比較 05/13 22:26
了解,但這樣他是不是會比較兩次,假設輸入A,他會計算A和\0,如果是這樣,有沒有辦
法只讓他計算A的值。謝謝。
※ 編輯: Holffman (111.251.141.96), 05/13/2019 22:35:09
6F:→ Lipraxde: 跟 '\0' 有啥干係? 05/13 22:50
7F:→ idiont: 你給的輸出應該不是用你給的程式碼跑出來的結果吧 05/13 22:55
8F:→ idiont: 猜測一下 你大概是用迴圈去讀 然後印出來吧 05/13 22:55
9F:→ idiont: 換行字元(ASCII編碼為10)留在buffer中被讀到 10-65=-55 05/13 22:56
10F:→ idiont: 使用%s讀字串才會有所謂的'\0' 他的ASCII編碼是0 05/13 22:57
11F:→ idiont: main function的return type也應該是int 05/13 22:58
12F:推 b0920075: 一個char就放一個byte,你的null byte從哪裡來的? 05/14 01:58
13F:推 caras: 你貼的這段 code 必定沒有你說的問題 XD 05/14 04:13
14F:→ caras: 別搞我們了,把真正出問題的 code 貼出來 05/14 04:13
15F:→ caras: 別叫我們通靈,上次通靈王大戰搞到生靈塗炭 XD 05/14 04:15
16F:→ MOONRAKER: 水晶球,顯出… 05/14 12:16
18F:→ Holffman: 抱歉造成大家的困擾,我的確有用for loop 圖片中是原始 05/14 13:09
19F:→ Holffman: 程式碼與編譯出的結果 謝謝大家 05/14 13:09
20F:→ RishYang: value=-51有什麼用途,純粹好奇 05/14 14:18
21F:→ Holffman: 我想要拿array來儲存輸入的字元,然後那個function是要 05/14 14:46
22F:→ Holffman: 用來產生正確index用的(輸入只會有26個英文字母的大小 05/14 14:46
23F:→ Holffman: 寫) 05/14 14:46
24F:推 Gway: C的scanf老問題 可以google看一下 如有餘力請順道看一下如 05/15 17:01
25F:→ Gway: 何scanf 讀取含空白的string 不然我猜你之後會再上來問類似 05/15 17:01
26F:→ Gway: 的問題 05/15 17:01