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 }

     

  消除結果如下所示:

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM