Linux常用C函数
- 格式:pdf
- 大小:466.63 KB
- 文档页数:14
归纳整理Linux下C语⾔常⽤的库函数----⽂件操作在没有IDE的时候,记住⼀些常⽤的库函数的函数名、参数、基本⽤法及注意事项是很有必要的。
参照Linux_C_HS.chm的⽬录,我⼤致将常⽤的函数分为⼀下⼏类:1. 内存及字符串控制及操作2. 字符串转换3. 字符测试4. ⽂件操作5. 时间⽇期6. 常⽤数学函数7. ⽂件内容操作8. ⽂件权限控制9. 进程操作10. 线程操作11. Socket操作12. 信号处理13. 数据结构及算法这次主要总结的是上⾯⿊⾊部分,关于⽂件操作的函数。
系统调⽤归类** 函数名⽤法备注**1. int open(const char *pathname, int flags); open and possibly create a file or device flags 必须包含O_RDONLY, O_WRONLY, or O_RDWR中的任何⼀个**2. int open(const char *pathname, int flags, mode_t mode); UP mode只是在flags中包含O_CREAT时才有效**3. int fsync(int fd); synchronize a file's in-core state with storage device 写完数据close前必须先同步,以防意外**4. off_t lseek(int fd, off_t offset, int whence); 定位⽂件位置第三个参数可以为SEEK_SET SEEK_CUR SEEK_END**5. ssize_t read(int fildes, void *buf, size_t nbyte); UP ⽂件位置会随读取的字节数移动**6. ssize_t write(int fildes, const void *buf, size_t nbyte); UP UP**7. int close(int fd); UP UP**8. void *mmap(void *addr, size_t length, int prot, int flags, 内存映射先⽤fstat得到⽂件⼤⼩,然后使⽤该函数将⽂件内容映射到内存中,然后就可以int fd, off_t offset); 直接调⽤字符串函数操作。
Linux常用C函数o pen和r ead以及write的使用说明2008-03-19 13:56open(打开文件)相关函数read,write,fcntl,close,link,stat,umask,unlink,fopen表头文件 #includ e<sys/types.h>#includ e<sys/stat.h>#includ e<fcntl.h>定义函数 int open( constchar * pathna me, int flags);int open( constchar * pathna me,int flags, mode_t mode);函数说明参数path name指向欲打开的文件路径字符串。
下列是参数f lags所能使用的旗标:O_RDON LY 以只读方式打开文件O_WRON LY 以只写方式打开文件O_RDWR以可读写方式打开文件。
上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用O R(|)运算符组合。
O_CREA T 若欲打开的文件不存在则自动建立该文件。
O_EXCL如果O_CR EAT 也被设置,此指令会去检查文件是否存在。
文件若不存在则建立该文件,否则将导致打开文件错误。
此外,若O_CRE AT与O_EXCL同时设置,并且欲打开的文件为符号连接,则会打开文件失败。
O_NOCT TY 如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。
O_TRUN C 若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的资料也会消失。
O_APPE ND 当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。
Read 函数语法要点:(不带缓冲,read函数读二进制文件和普通文件)所需头文件:#include<unistd.h>函数原型:ssize_t read(int fd,void *buf,size_t count)函数传入值:fd:文件描述符,buf:指定存储器读出数据的缓冲区count:指定读出的字节数函数返回值:成功,读出的字节数0:已达到文件尾-1:出错在读普通文件时,若读到要求的字节数之前已达到文件的尾部,则返回字节数会小于希望读出的字节数。
fread 函数是带缓冲的,fread可以读一个结构。
Linux中任何设备都是文件,都可用open,read,如果文件的大小是8k,你如果用read、write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用来实现从磁盘上读出。
如果你用fread,fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁盘上读出,也就是说fread,fwrite的调用效率比read,write高4倍,如果程序对内存有限制,则用read,write比较好Write函数语法要点:所需头文件:#include<unistd.h>函数原型:ssize_t write(int fd,void *buf,size_t count)函数传入值:fd:文件描述符,buf:指定存储器写入数据的缓冲区count:指定写入的字节数函数返回值:成功,已写的字节数-1:出错。
fopen /open区别UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write这里简单的介绍一下他们的区别。
1. fopen 系列是标准的C库函数;open系列是POSIX 定义的,是UNIX系统里的system call。
也就是说,fopen系列更具有可移植性;而open系列只能用在POSIX(Portable Operating System Interface,可移植操作系统接口) 的操作系统上。
1: 系统调用:读一个文件函数原型:ssize_t read(int fd, void *buf, size_t size) ;头文件:#include参数:略返回值:1> = 0 :达到文件结尾3> > 0 :返回读到的实际字节数备注:略2:系统调用:写入一个文件函数原型:ssize_t write(int fd, void *buf, size_t size) ;头文件:#include参数:略返回值:1> > 0 :返回写入的实际字节数目----------------------------------注意:当返回值不等于size时,则出现I/O错误备注:略3:系统调用:返回本进程的ID函数原型:pid_t getpid() ;头文件:#include参数:无返回值:1> > 0 :返回本进程ID2>4:系统调用:返回本进程的组ID函数原型:gid_t getgid() ;头文件:#include参数:无返回值:1> > 0 :返回组ID5:系统调用:复制一个文件描述符(一个参数)函数原型:int dup(int fd) ;头文件:#include参数:略返回值:1> >= 0 :返回一个文件描述符备注:此函数的结果就是两个文件符指向一个相同的文件6:系统调用:复制一个文件描述符(两个参数)函数原型:int dup(int fd1, int fd2) ;头文件:#include参数:fd1 :已知的fdfd2 :要复制到的fd返回值:1> >=0 :调用成功备注:此函数的分成三种情况:1> 若fd2已打开,且fd2 != fd1,则先将fd2关闭2> 若fd2已打开,且fd2 == fd1,则直接返回3> 若fd2没有打开,则直接复制7:系统调用:获取文件属性的三个函数函数原型:int stat(const char *pathname, stat *buf) ;int fstat(int fd, stat *buf) ;int lstat(int fd, stat *buf) ;头文件:#include#include参数:略返回值:如果返回负数,则调用失败备注:当操作的文件是个链接文件时1> stat和fstat返回的是链接指向文件的属性2> lstat返回的是链接文件本身的属性8:系统调用:判断文件类型的几个宏(Question:参数) 头文件:(Question)普通文件:S_ISREG()目录文件:S_ISDIR()链接文件:S_ISLNK()块设备:S_ISBLK()字符设备:S_ISCHR()管道:S_ISFIFO()SOCKET :S_ISSOCK()9:系统调用:测试文件存取模式函数原型:int access(const char *pathname, int mode) 头文件:#include#include#include参数:mode的取值情况:---------------1> 存在:F_OK (文件是否存在)2> 可读:R_OK3> 可写:W_OK4> 执行:X_OK返回值:如果失败,返回一个负数备注:10:系统命令:置位设置-用户-ID位chmod u+s file11:系统结构:文件存储权限字S_ISUID 设置-用户-IDS_ISGID 用户-组-IDS_ISIVX 粘住位S_IRUSR 用户相关S_IWUSRS_IXUSRS_IRGRP 组相关S_IWGRPS_IXGRPS_IROTH 其他用户相关S_IWOTHS_IXOTH12:系统函数:屏蔽标记函数函数原型:mode_t umask(mode_t masks) ;头文件:#include参数:要屏蔽的存储方式字(mode_t)返回值:返回原来的屏蔽方式字备注:1> 此函数如果出错,则不会返回2> 这是UNIX中出错不会返回的仅有的几个函数之一13:系统调用:改动文件存取模式函数原型:int chmod(const char *pathname, mode_t mode) ;int fchmode(int fd, mode_t mode) ;头文件:#include#include参数:略返回值:如果出错,则返回一个负数备注:fchmod能设置一个已打开文件的存储访问权限14:系统调用:截短文件的函数函数原型:int truncate(const char *pathname, off_t length) ;int ftruncate(int fd, off_t length) ;头文件:#include#include参数:off_t (截短到该长度)返回值:如果失败,则返回一个负数备注:1> length可正可负2> 可能出现“文件空洞”15:标准函数:设置流的缓冲类型函数原型:int setvbuf(FILE *fstream, void *buf, int mode, size_t size 头文件:#include参数:buf :if buf==NULL,则由系统来分配缓存,叫做系统缓存if buf!=NULL,则来使用分配的缓存,叫做用户缓存size:分配的用户缓存大小mode:_IOFBF :I/O全缓存_IOLBF :I/O行缓存_IONBF :I/O不缓存参数:如果失败,则返回一个负数16:标准函数:缓冲流函数原型:int fflush(FILE *fstream) ;头文件:#include参数:if fstream == NULL,则强制刷新全部流if fstream != NULL,则刷新特定流返回值:如果失败,则返回一个负数17:标准函数:打开文件的三个函数函数原型:FILE* fopen(const char *pathname, char *mode) ;FILE* fropen(const char *pathname, char *mode) ;FILE* fdopen(int fd, char *mode) ;头文件:#include参数:略返回值:略备注:1> fopen :路径 FILE*2> fropen :重新打开一个文件3> fdopen :把FILE* 和一个fd联系起来I/O的几种type类型1> r :为读而打开2> r+ :为读和写而打开3> w :使文件长度称为0,或为写而创建文件4> w+ :使文件长度成为0,为读和写而打开5> a :添加,为在文件尾写而打开或为了写而创建文件6> a+ :为在文件尾读和写而打开或创建19:标准函数:关闭一个文件流函数原型:int fclose(FILE* fstream) ;头文件:#include参数:略返回值:如果出错,返回一个负数备注:系统在关闭一个文件时,会自动刷新该文件相关的流1> 输入数据:全部被抛弃2> 输出数据:全部被刷新20:标准函数:读取一个字符(三个)函数原型:int getchar() ;int getc(FILE *fstream) ;int fgetc(FILE *fstream) ;头文件:#include参数:略返回值:1> EOF :文件结束2> >=0 :读取的字符的ASCII码3> getc和fgetc的差别getc是个宏2> 返回值一定要用int类型,不是char类型3> 三个函数遇见文件结束或I/O错误时,都会返回负数,这个时候应该用两个函数来判断是那种情况:feof(FILE *fstream) ; // 是否文件结尾?ferror(FILE *fstream) ; // 是否出现错误?21:标准函数:测试是否到达一个文件流的结束函数原型:int feof(FILE *fstream) ;头文件:#include参数:略返回值:略22:标准函数:测试一个文件流是否出现错误函数原型:int ferror(FILE *fstream) ;头文件:#include参数:略返回值:略23:标准函数:字符回送函数函数原型:int ungetc(int c, FILE *fsteam) ;头文件:#include参数:略返回值:1> 如果回送成功,则返回字符c2> 如果失败,则返回一个负数24:标准函数:字符输出函数函数原型:int putchar(int c) ;int putc(int c, FILE *fstream) ;int fputc(int c, FILE *fstream) ;头文件:#include参数:略返回值:如果失败,则返回一个负数备注:其他相关事项和put类型相同25:标准函数:每次一行I/O的输入函数函数原型:int fgets(const char *buf, size_t size, FILE *fstream) ;头文件:#include参数:略返回值:1> 如果成功,返回实际写入的字节数2> 如果返回值和size不相等,则出现错误26:标准函数:每次一行I/O的输出函数函数原型:int fputs(const char *buf, FILE *fstream) ;头文件:#include参数:略返回值:1> >=0 :返回实际读取的字节数2> fgets函数中,如果缓存大小是size,则最多能存放n-1个字符(包括‘\n’符号)2> fputs函数中,系统推荐在buf[size-2]字符=’\n’,不过并不强制这样做27:标准函数:读二进制文件或数据类型函数原型:int fread(void *buf, size_t objsize, int objnum, FILE *fs头文件:#include参数:buf :缓存首地址objsize :一个字节所占的字节数目objnum :对象的数目返回值:1> >=0 :返回读到的对象数目2>28:标准函数:写二进制文件或数据类型函数原型:int fwrite(const void *buf,size_t size, int num, FILE *f)头文件:#include参数:buf :缓存首地址objsize :一个字节所占的字节数目num :要写入的字节数目返回值:如果返回值和num不相等,那么就出现了错误备注:fread和fwrite函数是有局限性的,因为各种操作系统同一种类型所占的空间大小也是有差别的29:标准函数:定位流函数函数原型:int fseek(FILE *fstream, long offset, int whence) ;头文件:#include参数:offset :偏移量whence :从什么地方开始(SET,END,CURSOR)返回值:如果定位失败,则返回一个负数30:标准函数:重置文件流函数原型:int rewind(FILE *fstream)头文件:#include参数:略返回值:略31:标准函数:建立临时文件(两个)函数原型:char* tmpnam(char *str) ;FILE* tmpfile(void) ;头文件:#include参数:if (str == NULL)路径名会存储在str中if (str != NULL)路径名存储在系统的静态空间里面返回值:tmpnam :返回临时文件的路径名tmpfile :返回临时文件的指针。
学会用Linux C文件读写函数C标准库提供的用于读写文件的函数非常多,大多数函数都在stdio.h中声明。
fread/fwrite,fgets/fputs,fgetchar/fputchar,fprintf/fscanf.。
..。
..。
..。
..这些函数原型声明都在stdio.h中,如下:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);int fgetc(FILE *stream);char *fgets(char *s,int size,FILE *stream);int getc(FILE *stream);int getchar(void);int ungetc(int c,FILE *stream);无论是写入文件还是从文件流流中读取,都要先打开文件,完成后还要将打开的文件关闭。
为了防止指针变成野指针,还应将文件指针指向NULL。
FILE *fopen(const char *pathname,const char *mode);FILE *fdopen(int fd,const char *mode);FILE *freopen(const char *pathname,const char *mode,FILE *stream);fopen函数的安全版本是fopen_s(FILE *stream,char *filename,char *mode),使用之前要将宏fileutil.h#ifndef __FILEUTIL_H#define __FILEUTIL_H#includeFILE *open_file(const char *file,const char *mode);void read0(const char *file);void read1(const char *file);void read2(const char *file);。
Linux下常用C语言字符串操作函数stroul,strdupsnprintf()atioC中常用字符串操作函数#include <string.h>size_t strlen(const char *s) 测量字符串长度s的实际长度。
例如s[20]="abc",那么strlen(s)的结果是3,而不是20.这就是实际长度char *strcat(const char *s1, const *s2) 将字符串s2连接到s1的尾部。
从s1的\0开始。
int strcmp(const *s1,const *s2) 比较s1和s2。
s1 = s2的时候返回值=0s1 < s2的时候返回至<0s1 > s2的时候返回值>0char *strchr(const char *s, char c); 返回s中首次出现C的位置的指针。
如果s中不存在c则返回NULLchar *strrchr(const char *s, char c );返回s中最后一次出现c的位置的指针。
如果没有,则返回0char *strstr(const char *haystack, const char *needle);返回haystack中needle字符串首次出现的位置的指针(不比较结束符NULL)。
若果没找到则返回NULL限定长度的比较,拷贝和追加函数int strncmp(char *s1, const char *s2, size_t n);(这些都是针对字符串的前n个字符来操作的)char *strncpy(char *dest, const char *src, size_t n);char *strncat(char *dest, const char *src, size_t n);char *strdup(char *s)返回指向被复制的字符串的指针,所需空间由malloc()分配而且需要free释放空间int atoi(const char *nptr);将字符串转换成整型数atoi()会扫描参数nptr字符串,跳过前面的空格,直到遇上数字或者正负号才开始装换,而再遇到非数字或者非字符串结束时('\0')其实ato是一族将字符转换为数的函数,atof,atol:他们分别是将字符串转换成浮点型,长整型数。
linux c 字符查找函数“Linux C字符查找函数”是指在Linux操作系统的C编程环境中,专门用于查找特定字符的函数集合。
这些函数通常用于字符串处理、文本分析和模式匹配等应用场景。
本文将从基本定义、常用函数、示例代码以及注意事项等方面一步步回答关于“Linux C字符查找函数”的问题。
首先,我们来理解一下“字符查找函数”的基本定义。
在Linux C 编程环境中,字符查找函数是指用于在字符串中查找指定字符的函数。
它们可以帮助我们快速定位并处理字符串中的特定字符,以满足不同的需求。
这些函数通常属于C标准库的一部分,可以在开发中直接引用,无需额外的安装或配置。
在Linux C编程环境中,有许多常用的字符查找函数可供选择。
下面我们将逐一介绍一些常见的函数及其用法。
1. strchr函数:在字符串中查找第一个指定字符的位置。
该函数的原型为:cchar *strchr(const char *str, int c);其中,str是待查找的字符串,c是要查找的字符。
函数返回第一个匹配字符的指针,若找不到则返回NULL。
2. strrchr函数:在字符串中查找最后一个指定字符的位置。
该函数的原型为:cchar *strrchr(const char *str, int c);与strchr函数类似,只是它从字符串的末尾开始查找,并返回最后一个匹配字符的指针。
3. strstr函数:在字符串中查找第一次出现指定串的位置。
该函数的原型为:cchar *strstr(const char *haystack, const char *needle);haystack是待查找的字符串,needle是要查找的子串。
函数返回第一次匹配子串的指针,若找不到则返回NULL。
4. strpbrk函数:在字符串中查找任意字符集中的字符的位置。
该函数的原型为:cchar *strpbrk(const char *str, const char *charset);str是待查找的字符串,charset是要查找的字符集。
在Linux中,你可以使用C标准库中的时间函数来计算时间差。
以下是一个简单的示例,展示了如何使用time_t和difftime函数来计算两个时间点之间的差值(以秒为单位):
#include <stdio.h>
#include <time.h>
int main() {
// 获取当前时间
time_t start_time = time(NULL);
printf("开始时间: %ld\n", start_time);
// 模拟一些操作
sleep(5); // 等待5秒
// 再次获取时间
time_t end_time = time(NULL);
printf("结束时间: %ld\n", end_time);
// 计算时间差
double time_difference = difftime(end_time, start_time);
printf("时间差: %.2f秒\n", time_difference);
return 0;
}
在这个示例中,我们首先使用time()函数获取当前的时间(以从1970年1月1日以来的秒数表示),然后模拟一些操作(例如,等待5秒)。
然后,我们再次使用time()函数获取当前的时间。
最后,我们使用difftime()函数计算两个时间点之间的差值,该函数返回一个double类型的值,表示时间差(以秒为单位)。
请注意,这个示例仅用于演示目的。
在实际应用中,你可能需要根据你的具体需求进行修改和扩展。
在Linux下,使用C语言编写的网络编程中,`listen`函数是套接字编程(socket programming)中的一部分,它主要用于将服务器套接字(socket)设置为监听状态,等待客户端的连接请求。
下面是`listen`函数的函数原型:```cint listen(int sockfd, int backlog);```参数说明:* `sockfd`:表示服务器套接字的文件描述符(file descriptor)。
* `backlog`:表示等待连接的最大队列长度。
这个参数可以用来控制同时可以处于等待状态的连接数。
函数返回值:* 如果函数调用成功,返回值为0;* 如果函数调用失败,返回值为-1,并设置相应的错误码(errno)。
下面是`listen`函数的示例代码:```c#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>int main() {int server_fd, ret;struct sockaddr_in server_addr;// 创建套接字server_fd = socket(AF_INET, SOCK_STREAM, 0);if (server_fd == -1) {perror("socket");exit(EXIT_FAILURE);}// 设置服务器地址信息memset(&server_addr, 0, sizeof(server_addr));server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = htonl(INADDR_ANY);server_addr.sin_port = htons(8080);// 将套接字绑定到服务器地址上ret = bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));if (ret == -1) {perror("bind");exit(EXIT_FAILURE);}// 将套接字设置为监听状态,等待客户端连接请求ret = listen(server_fd, 10);if (ret == -1) {perror("listen");exit(EXIT_FAILURE);}printf("Listening...\n");// 进入循环,等待客户端的连接请求,并处理每一个连接while (1) {struct sockaddr_in client_addr;socklen_t client_len = sizeof(client_addr);int client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_len);if (client_fd == -1) {perror("accept");exit(EXIT_FAILURE);}// 处理客户端连接请求,此处只打印客户端地址信息printf("Accepted connection from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));close(client_fd);}return 0;}```这段代码创建了一个服务器套接字,将其绑定到本地地址(IP地址任意,端口号为8080),然后调用`listen`函数将其设置为监听状态,等待客户端的连接请求。
Linux 常用C函数(文件操作篇)close(关闭文件)open,fcntl,shutdown,unlink,fclose表头文件 #include<unistd.h>定义函数 int close(int fd);函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。
参数fd为先前由open()或creat()所返回的文件描述词。
返回值若文件顺利关闭则返回0,发生错误时返回-1。
错误代码 EBADF 参数fd 非有效的文件描述词或该文件已关闭。
附加说明虽然在进程结束时,系统会自动关闭已打开的文件,但仍建议自行关闭文件,并确实检查返回值。
范例参考open()creat(建立文件)相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen表头文件 #include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>定义函数 int creat(const char * pathname, mode_tmode);函数说明参数pathname指向欲建立的文件路径字符串。
Creat()相当于使用下列的调用方式调用open()open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));错误代码关于参数mode请参考open()函数。
返回值 creat()会返回新的文件描述词,若有错误发生则会返回-1,并把错误代码设给errno。
EEXIST 参数pathname所指的文件已存在。
EACCESS 参数pathname 所指定的文件不符合所要求测试的权限EROFS 欲打开写入权限的文件存在于只读文件系统内EFAULT 参数pathname 指针超出可存取的内存空间EINVAL 参数mode 不正确。
Linux常用C函数<1> isalnum (测试字符是否为英文或数字)isalnum()checks for an alphanumeric character; it is equivalentto (isalpha(c) || isdigit(c)).相关函数isalpha,isdigit,islower,isupper表头文件#include<ctype.h>定义函数int isalnum (int c)函数说明检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c) || isdigit(c)”做测试。
返回值若参数c为字母或数字,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
举例说明:这是测试的结果, 很明显isalnum()函数检查参数c是否为英文字母或阿拉伯数字<2> isalpha (测试字符是否为英文字母):isalpha()checks for an alphabetic character; in the standard "C"locale, it is equivalent to (isupper(c) || islower(c)).In some locales, there may be additional characters forwhich isalpha() is true—letters which are neither uppercase nor lower case.相关函数isalnum,islower,isupper表头文件#include<ctype.h>定义函数int isalpha (int c)函数说明检查参数c是否为英文字母,在标准c中相当于使用“isupper(c)||islower(c)”做测试。
返回值若参数c为英文字母,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
举例说明:这是测试的结果, 很明显isalpha()函数检查参数c是否为英文字母<3> isascii(测试字符是否为ASCII 码字符)isascii()checks whether c is a 7-bit unsigned char value thatfits into the ASCII character set.相关函数iscntrl表头文件#include <ctype.h>定义函数int isascii(int c);函数说明检查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。
返回值若参数c为ASCII码字符,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/* 判断int i是否具有对映的ASCII码字符*/举例说明:这是测试的结果,很明显的可以看到127以上的都不是ascii码, 因为ASCII只有128个<4> iscntrl(测试字符是否为ASCII 码的控制字符)iscntrl()checks for a control character.相关函数isascii表头文件#include <ctype.h>定义函数int iscntrl(int c);函数说明检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间。
返回值若参数c为ASCII控制码,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
举例说明:这是测试的结果,我们看的出, ASCII码的控制字符, 是从0-31的, 也就是说是32个<5> isdigit(测试字符是否为阿拉伯数字)isdigit()checks for a digit (0 through 9).相关函数isxdigit表头文件#include<ctype.h>定义函数int isdigit(int c)函数说明检查参数c是否为阿拉伯数字0到9。
返回值若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
举例说明:这是测试的结果,<6> isgraph(测试字符是否为可打印字符)isgraph()checks for any printable character except space.相关函数isprint表头文件#include <ctype.h>定义函数int isgraph (int c)函数说明检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE。
返回值若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/* 判断str字符串中哪些为可打印字符*/这是测试的结果,可以看得出,除了空格都打印了出来<7>islower(测试字符是否为小写字母)相关函数isalpha,isupper表头文件#include<ctype.h>定义函数int islower(int c)函数说明检查参数c是否为小写英文字母。
返回值若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
islower()checks for a lower-case character.举例说明:这是测试的结果,<8> isprint(测试字符是(否为可打印字符)相关函数isgraph表头文件#include<ctype.h>定义函数int isprint(int c);函数说明检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。
返回值若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/* 判断str字符串中哪些为可打印字符包含空格字符*/举例说明:这是测试的结果,可以看得出, isprint()打印是带空格的, 而上面对的打印控制字符的isgraph()是不带空格的<9> isspace(测试字符是否为空格字符)isspace()checks for white-space characters. In the "C" and"POSIX" locales, these are: space, form-feed (’\f’),newline (’\n’), carriage return (’\r’), horizontal tab(’\t’), and vertical tab (’\v’).相关函数isgraph表头文件#include<ctype.h>定义函数int isspace(int c)函数说明检查参数c是否为空格字符,也就是判断是否为空格('')、定位字符('\t')、CR('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。
返回值若参数c为空格字符,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/*将字符串str[]中内含的空格字符找出,并显示空格字符的ASCII码*/举例说明:这是测试的结果,代表的是空格329 代表的是"\t"10 代表的是"\n"<10 > ispunct(测试字符是否为标点符号或特殊符号)ispunct()checks for any printable character which is not a spaceor an alphanumeric character.相关函数isspace,isdigit,isalpha表头文件#inlude<ctype.h>定义函数int ispunct(int c)函数说明检查参数c是否为标点符号或特殊符号。
返回TRUE也就是代表参数c为非空格、非数字和非英文字母。
返回值v若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/*列出字符串str中的标点符号或特殊符号*/举例说明:这是测试的结果,<11> isupper(测试字符是否为大写英文字母)isupper()checks for an uppercase letter.相关函数isalpha,islower表头文件#include<ctype.h>定义函数int isupper(int c)函数说明检查参数c是否为大写英文字母。
返回值若参数c为大写英文字母,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/*找出字符串str中为大写英文字母的字符*/举例说明:这是测试的结果,<12> isxdigit(测试字符是否为16进制数字)isxdigit()checks for a hexadecimal digits, i.e. one of0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F.相关函数isalnum,isdigit表头文件#include<ctype.h>定义函数int isxdigit (int c)函数说明检查参数c是否为16进制数字,只要c为下列其中一个情况则返回TRUE。
16进制数字:0123456789ABCDEF。
返回值若参数c为16进制数字,则返回TRUE,否则返回NULL(0)。
附加说明此为宏定义,非真正函数。
范例/*找出字符串str中为十六进制数字的字符*/举例说明:这是测试的结果,。