c语言中有很多处理string类型的函数,今天简单的使用了一下isspace()函数,自我实现调用了一下。
Isspace()函数
包含在ctype.h头文件中
函数原型:
int isspace(int c);
函数功能
判断输入字符是否为空格/回车/制表符等
函数参数:
获取实参char类型的字符
函数返回值:
如果获取到的字符是空格/回车/制表符等,返回非0值(即真);否则返回0
实例一:调用头文件直接使用isspace()函数
1 #include<stdio.h> 2 #include<ctype.h> 3 int main(void) 4 { 5 char arr[32]=" hello world "; 6 printf("<%s> ", arr); 7 char*r = arr; 8 char*p = r; 9 char*q = arr + strlen(arr)-1; 10 while(isspace(*p)) 11 p++; 12 while(isspace(*q)) 13 q--; 14 while(p <= q) 15 *r++=*p++; 16 *r =''; 17 printf("<%s> ", arr); 18 return0; 19 }
实例二:根据函数原型,自己实现isspace()函数
1 int myIsspace(char c) 2 { 3 if(c ==' '|| c ==' '|| c ==' ') 4 return1; 5 else 6 return0; 7 }
在直接调用isspace()函数时,要谨慎使用,在不同的操作平台上,可能会有崩溃行为,建议自己实现一个isspace()函数。
错误如下:
拓展:
这里我调用isspace()函数主要实现消除字符串两边的空格或者其他符号,例如:“ hello heima ”消除空格之后的格式为:“hello heima”
消除实现思想:
1. 定义两个指针p,q分别指向字符串头和尾;
2. 再创建一个临时指针r来存放字符串数组arr的首地址:
3. p,q遇见空格就p++和q–;一直循环直至非空。
具体实现Demo:(这里使用自定义isspace()函数)
1 #include<stdio.h> 2 #include<string.h> 3 int myIsspace(char c) 4 { 5 if(c ==' '|| c ==' '|| c ==' ') 6 return1; 7 else 8 return0; 9 } 10 int main(void) 11 { 12 char arr[32]=" hello world "; 13 printf("<%s> ", arr); 14 char*r = arr; 15 char*p = r; 16 char*q = arr + strlen(arr)-1; 17 while(myIsspace(*p)) 18 p++; 19 while(myIsspace(*q)) 20 q--; 21 while(p <= q) 22 *r++=*p++; 23 *r =''; 24 printf("<%s> ", arr); 25 return0; 26 }
消除结果如下所示:
最新评论