c标准库

原创 2011年01月13日 16:07:00

C语言专题——标准库<ctype.h>
1 字符测试函数

1> 函数原型均为int isxxxx(int)
2> 参数为int, 任何实参均被提升成整型
3> 只能正确处理处于[0, 127]之间的值

isalpha  'A'~'Z', 'a'~'z'
isdigit  '0'~'9'
isxdigit '0'~'9', 'A'~'F', 'a'~'f'
isalnum  isalpha || isdigit

islower  'a'~'z'
isupper  'A'~'Z'

isspace
9  '/t'  (tab: 水平制表位)
10 '/n'  (line feed: 换行)
11 '/v'  (home: 垂直制表位)
12 '/f'  (form feed: 换页)
13 '/r'  (carriage return: 回车)
32  ' '  (space: 空格)

isgraph  33~126
isprint  isgraph || ' '
ispunct  isgraph && !isalnum
 
iscntrl  0~31, 127
 
2 字符映射函数

1> 函数原型为int toxxxx(int)
2> 对参数进行检测, 若符合范围则转换, 否则不变

int tolower(int); 'A'~'Z' ==> 'a'~'z'
int toupper(int); 'a'~'z' ==> 'A'~'Z'
 
3 附测试代码

#include <stdio.h>
#include <ctype.h>

char (* isxx_name[]) =
{
 "isalpha",
 "isdigit",
 "isxdigit",
 "isalnum",

 "islower",
 "isupper",

 "isspace",

 "isgraph",
 "isprint",
 "ispunct",
 
 "iscntrl"
};

int (* isxx_list[])(int) =
{
 isalpha,
 isdigit,
 isxdigit,
 isalnum,
 
 islower,
 isupper,
 
 isspace,
 
 isgraph,
 isprint,
 ispunct,
 
 iscntrl
};

int main()
{
 int i, k;
 
 for (i=0; i<sizeof(isxx_list)/sizeof(isxx_list[0]); i++)
 {
  printf("Testing %s/n", isxx_name[i]);
  for (k=0; k<128; k++)
   if (isxx_list[i](k))
    printf("%3d %c/n", k, k);
  printf("/n");
 }
 
 return 0;
}

source: 《C & C++ Code Capsules》

(a*b)%c 小的技巧

处理相乘会位数越界的情况
  • u010123208
  • u010123208
  • 2014年05月08日 21:11
  • 1264

Jstl标签<c:if>的用法

转自:http://blog.163.com/yiba_suanzao/blog/static/1305573772009929114816739/ Jstl标签的用法    标签必须要有tes...
  • suyu_yuan
  • suyu_yuan
  • 2016年02月17日 14:00
  • 46348

JSTL标签c:if和c:chose--个人笔记

没有可以用来取代结构:        如果              否则     在同一个 中,当所有 的条件都没有成立时,则执行 的本体内容。 ...
  • wangyang1354
  • wangyang1354
  • 2016年07月27日 16:47
  • 1854

C语言中<>和“”的区别

例如你使用的是TurboC include 代表编译时直接在TurboC软件设置指定的路径(默认是TurboC所在文件夹下的include文件夹)中寻找里面是否有stdlib.h的库文件。如果有,直...
  • xieyihua1994
  • xieyihua1994
  • 2016年09月29日 21:21
  • 1458

C语言for循环

c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句. for(表达式 1;表达式 2;表达式...
  • YanandYue
  • YanandYue
  • 2015年10月14日 20:19
  • 8629

C语言中*和&的区别-代码实现说明

*是指针运算符,可以表示一个变量是指针类型;也可以表示一个指针变量的所指向的存储单元,可以获取某个地址存储的值。 &是取地址符号,既取得某一个变量的地址 int *p=&a; 或 int *p; p...
  • qq_20366761
  • qq_20366761
  • 2016年10月23日 19:51
  • 628

用C语言实现websocket服务器

Websocket Echo Server Demo背景嵌入式设备的应用开发大都依靠C语言来完成,我去研究如何用C语言实现websocket服务器也是为了在嵌入式设备中实现一个ip camera的功能...
  • lell3538
  • lell3538
  • 2017年03月05日 19:25
  • 2634

Objective-C、C++以及C之间的区别

原文传送门:http://blog.csdn.net/dqjyong/article/details/7663866        随着ios开发的兴起,Objective-C语言收到了广大移动开发者...
  • lengshengren
  • lengshengren
  • 2014年01月04日 09:45
  • 9137

C语言中& | ^ ~ >> <<头疼的符号(不用+、-、×、÷做加法)

一直头疼的符号,现在不头疼了。 我们都知道,数据在计算机里是以二进制形式表示的。在实际问题中,常常 也有一些数据对象的情况比较简单,只需要一个或几个二进制位就能够编码表示。如果在一个软件系统中这种数据...
  • caojunhao123
  • caojunhao123
  • 2013年09月28日 12:13
  • 3619

C语言中的++a和a++的区别

自增自减 1、++自增运算符:如a++,++a都等价于a = a + 1; 2、--自减运算符:如a--,--a都等价于 a = a -1;...
  • lovexiaonvren
  • lovexiaonvren
  • 2014年07月07日 10:06
  • 7419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c标准库
举报原因:
原因补充:

(最多只允许输入30个字)