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()函数。


错误如下:

C语言–isspace()函数实现-风君雪科技博客

  拓展:

  这里我调用isspace()函数主要实现消除字符串两边的空格或者其他符号,例如:“  hello heima  ”消除空格之后的格式为:“hello heima”

  消除实现思想:
  1. 定义两个指针p,q分别指向字符串头和尾;
  2. 再创建一个临时指针r来存放字符串数组arr的首地址:
  3. p,q遇见空格就p++和q–;一直循环直至非空。


  如图:
C语言–isspace()函数实现-风君雪科技博客


  

      具体实现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 }

  消除结果如下所示:

C语言–isspace()函数实现-风君雪科技博客