c语言常用字符函数的使用方法和实现逻辑
本文章会为初学者讲解常用的几种字符函数的使用和实现逻辑,供大家参考学习。
字符函数:
int isdigit(char c);
isdigit用于判断字符c是否为数字,若c是数字,则反回非零值,(通常为1),若不是数字,则返回0。使用isdigit需要包含头文件ctype.h。
示例:
#include<stdio.h>
#include<ctype.h>
int main() {
char c1 = '5';
char c2 = 'a';
printf("%d\n", isdigit(c1));
printf("%d\n", isdigit(c2));
return 0;
}
运行结果:
函数返回的非零值是随机的,博主这里返回的是4,但你们也可能返回5。
接下来我们尝试实现自己的isdigit
判断字符是否为数字实际是根据字符的ASCII码的范围来实现的,字符’0‘的ASCII码是48,’9‘是57,因此判断字符c是否为数字即确定c的ASCII码大于48并且小于57即可,
#include<stdio.h>
#include<ctype.h>
int my_isdigit(char c) {
return (c <= '9' && c >= '0') ? 1 : 0;
}
int main() {
char c1 = '5';
char c2 = 'a';
printf("%d\n", my_isdigit(c1));
printf("%d\n", my_isdigit(c2));
return 0;
}
(c <= '9' && c >= '0') ? 1 : 0;运用了三目操作符的知识,(模板:条件表达式?表达式1:表达式2;如果条件表达式为真,则返回表达式1,否则返回表达式2)。
int islower(char c);
islower用于判断字符c是否为小写,若字符c为小写则返回非零值,否则返回0。使用islower需要包含头文件ctype.h。
示例:
#include<stdio.h>
#include<ctype.h>
int main() {
char c1 = 'a';
char c2 = 'A';
printf("%d\n", islower(c1));
printf("%d\n", islower(c2));
return 0;
}
运行结果:
接下来我们来尝试实现自己的islower。
字符a对应的ASCII码为97,字符z对应的ASCII码为123,如果字符的ASCII码不小于97且不大于122则字符为小写,否则不是小写。
实现代码:
#include<stdio.h>
#include<ctype.h>
int my_islower(char c) {
return (c <= 'z' && c >= 'a') ? 1 : 0;
}
int main() {
char c1 = 'a';
char c2 = 'A';
printf("%d\n", my_islower(c1));
printf("%d\n", my_islower(c2));
return 0;
}
运行结果:
int isupper(char c);
isupper 用于判断字符c是否为大写字母,若字符c为大写,则返回非零值,若为小写,则返回0,使用时需要包含头文件从type.h。
示例:
#include<stdio.h>
#include<ctype.h>
int main() {
char c1 = 'a';
char c2 = 'A';
printf("%d\n", isupper(c1));
printf("%d\n", isupper(c2));
}
运行结果:

接下来我们来实现自己的isupper。
字符A对应的ASCII码是65,字符Z对应的ASCII码是90,若字符是大写字母,则对应的ASCII码应不小于65且不大于90,我们可以通过下面代码实现:
#include<stdio.h>
#include<ctype.h>
int my_isupper(char c) {
return (c >= 'A' && c <= 'Z') ? 1 : 0;
}
int main() {
char c1 = 'a';
char c2 = 'A';
printf("%d\n", my_isupper(c1));
printf("%d\n", my_isupper(c2));
}
运行结果:
int tolower(char c);
函数功能:将大写英文(A-Z)转换为对应的小写字母(a-z);若输入不是大写字母,则原路返回原字符。
示例:
#include<stdio.h>
#include<ctype.h>
int main() {
char c1 = 'A';
printf("%c\n", tolower(c1));
}
运行结果:
接下来我们来实现自己的tolower。
大写字母对应的ASCII码是65-90,小写字母对应的ASCII码是97-122,易知大写字母对应的ASCII码与其小写字母相差32,我们可以通过以下代码实现:
#include<stdio.h> #include<ctype.h> char my_tolower(char c) { if (c <= 'Z' && c >= 'A') { c += 32; } return c; } int main() { char c1 = 'A'; printf("%c\n", my_tolower(c1)); }
运行结果:
int toupper(char c);
函数功能:将小写字母转化成大写字母,使用方法和实现逻辑与tolower类似,这里就不为大家阐述了。
总结:
isdigit 判断字符是否为数字;
islower 判断字符是否为小写字母;
isupper 判断字母是否为大写字母;
tolower 将大写字母转化成小写字母;
tolower将小写字母转化成大写字母;
更多推荐

所有评论(0)