Re: [問題] 字元轉數字函數

看板C_and_CPP作者 (Rish)時間5年前 (2019/05/14 12:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
原Po提供的程式碼 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; } 依據原Po描述可知他使用Xcode 可是他所提供的原碼不太可能成功在Xcode上編譯 除非換編譯器,或是用之前的版本(5版在9/2016釋出) Xcode 5.0.0之開始預設的編譯器是Clang Clang對於void main(void)最後又return 0; 應該會產生編譯錯誤(在MSYS2 Clang 8.0.0上測試的結果) 所以我去問了水晶球,他顯示: https://ideone.com/wOiPyb# fgets如果可以讀完一行得到字串的結尾是"\n\0" 如果用strlen取字串"A\n\0"長度會是2 stlen只認'\0',從開頭到'\0'有2個字元 導致會意外的讀到'\n'輸出-55 補充: int a = 'A'; 是正確的做法 實際上'A'就是整數 sizeof('A');//回傳4 而 char c = 'A'; sizeof(c);//回傳1 char就是整數型別,只是範圍比較小的那種 所以真的不用特別寫轉型 另外<ctype.h>中有些好用的函數 islower, isupper, toupper, tolower 善用文件https://en.cppreference.com/w/c/string/byte 最後可以看看Stackoverflow關於問問題的方法 https://stackoverflow.com/help 關於XY問題 https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem --------------------------- 大Guy4醬 --------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.142.121.55 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1557809046.A.E44.html
文章代碼(AID): #1SsaUMv4 (C_and_CPP)