作者RishYang (Rish)
看板C_and_CPP
标题Re: [问题] 字元转数字函数
时间Tue May 14 12:44:00 2019
原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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1557809046.A.E44.html