[問題] 字串轉數字函數

看板C_and_CPP作者 (Holffman)時間5年前 (2019/05/13 20:38), 5年前編輯推噓5(5021)
留言26則, 10人參與, 5年前最新討論串1/1
小弟目前想寫一個字元轉數字的函數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

05/13 20:52, 5年前 , 1F
標題寫字串 內文寫字元 到底是字串還是字元?
05/13 20:52, 1F

05/13 20:54, 5年前 , 2F
字元直接 c - 'A' 不就好了
05/13 20:54, 2F
※ 編輯: Holffman (111.251.141.96), 05/13/2019 21:41:27 標題有錯,已經改正。我有那樣試過,但編譯器還是會跑出不相關的數字,還是是因為 編譯器的問題(我用xcode)?謝謝 ※ 編輯: Holffman (111.251.141.96), 05/13/2019 21:42:58

05/13 21:53, 5年前 , 3F
因為你寫錯了。為什麼自己錯都要第一個怪編譯器 XDDDD
05/13 21:53, 3F
痾 我只是想說會不會是那樣的問題,小弟C新手,還請S大賜教,謝謝。 ※ 編輯: Holffman (111.251.141.96), 05/13/2019 21:57:44

05/13 22:07, 5年前 , 4F
那你附個 code 啊
05/13 22:07, 4F
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

05/13 22:26, 5年前 , 5F
char也是數值直接比較就好了,你幹嘛轉成int再比較
05/13 22:26, 5F
了解,但這樣他是不是會比較兩次,假設輸入A,他會計算A和\0,如果是這樣,有沒有辦 法只讓他計算A的值。謝謝。 ※ 編輯: Holffman (111.251.141.96), 05/13/2019 22:35:09

05/13 22:50, 5年前 , 6F
跟 '\0' 有啥干係?
05/13 22:50, 6F

05/13 22:55, 5年前 , 7F
你給的輸出應該不是用你給的程式碼跑出來的結果吧
05/13 22:55, 7F

05/13 22:55, 5年前 , 8F
猜測一下 你大概是用迴圈去讀 然後印出來吧
05/13 22:55, 8F

05/13 22:56, 5年前 , 9F
換行字元(ASCII編碼為10)留在buffer中被讀到 10-65=-55
05/13 22:56, 9F

05/13 22:57, 5年前 , 10F
使用%s讀字串才會有所謂的'\0' 他的ASCII編碼是0
05/13 22:57, 10F

05/13 22:58, 5年前 , 11F
main function的return type也應該是int
05/13 22:58, 11F

05/14 01:58, 5年前 , 12F
一個char就放一個byte,你的null byte從哪裡來的?
05/14 01:58, 12F

05/14 04:13, 5年前 , 13F
你貼的這段 code 必定沒有你說的問題 XD
05/14 04:13, 13F

05/14 04:13, 5年前 , 14F
別搞我們了,把真正出問題的 code 貼出來
05/14 04:13, 14F

05/14 04:15, 5年前 , 15F
別叫我們通靈,上次通靈王大戰搞到生靈塗炭 XD
05/14 04:15, 15F

05/14 12:16, 5年前 , 16F
水晶球,顯出…
05/14 12:16, 16F

05/14 13:09, 5年前 , 17F

05/14 13:09, 5年前 , 18F
抱歉造成大家的困擾,我的確有用for loop 圖片中是原始
05/14 13:09, 18F

05/14 13:09, 5年前 , 19F
程式碼與編譯出的結果 謝謝大家
05/14 13:09, 19F

05/14 14:18, 5年前 , 20F
value=-51有什麼用途,純粹好奇
05/14 14:18, 20F

05/14 14:46, 5年前 , 21F
我想要拿array來儲存輸入的字元,然後那個function是要
05/14 14:46, 21F

05/14 14:46, 5年前 , 22F
用來產生正確index用的(輸入只會有26個英文字母的大小
05/14 14:46, 22F

05/14 14:46, 5年前 , 23F
寫)
05/14 14:46, 23F

05/15 17:01, 5年前 , 24F
C的scanf老問題 可以google看一下 如有餘力請順道看一下如
05/15 17:01, 24F

05/15 17:01, 5年前 , 25F
何scanf 讀取含空白的string 不然我猜你之後會再上來問類似
05/15 17:01, 25F

05/15 17:01, 5年前 , 26F
的問題
05/15 17:01, 26F
文章代碼(AID): #1SsML3By (C_and_CPP)