C语言--isspace()函数实现

  c语言中有很多处理string类型的函数,今天简单的使用了一下isspace()函数,自我实现调用了一下。

Isspace()函数

  包含在ctype.h头文件中
函数原型:

  1. int isspace(int c);

函数功能
  判断输入字符是否为空格/回车/制表符等
函数参数:
  获取实参char类型的字符
函数返回值:
  如果获取到的字符是空格/回车/制表符等,返回非0值(即真);否则返回0

实例一:调用头文件直接使用isspace()函数

  1.  1 #include<stdio.h>
     2 #include<ctype.h>
     3 int main(void)
     4 {
     5     char arr[32]=" hello world ";
     6     printf("<%s>\n", 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 ='\0';
    17     printf("<%s>\n", arr);
    18     return0;
    19 }

     


实例二:根据函数原型,自己实现isspace()函数

  1. 1 int myIsspace(char c)
    2 {
    3     if(c =='\t'|| c =='\n'|| 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.  1 #include<stdio.h>
     2 #include<string.h>
     3 int myIsspace(char c)
     4 {
     5     if(c =='\t'|| c =='\n'|| c ==' ')
     6         return1;
     7     else
     8         return0;
     9 }
    10 int main(void)
    11 {
    12     char arr[32]=" hello world ";
    13     printf("<%s>\n", 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 ='\0';
    24     printf("<%s>\n", arr);
    25     return0;
    26 }

     

  消除结果如下所示:

 

 



posted on 2017-03-24 11:34  bob-tong  阅读(21623)  评论(3编辑  收藏  举报

导航