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