c語言中有不少處理string類型的函數,今天簡單的使用了一下isspace()函數,自我實現調用了一下。數組
包含在ctype.h頭文件中
函數原型:函數
int isspace(int c);
函數功能
判斷輸入字符是否爲空格/回車/製表符等
函數參數:
獲取實參char類型的字符
函數返回值:
若是獲取到的字符是空格/回車/製表符等,返回非0值(即真);不然返回0spa
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 }
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"code
消除實現思想:
1. 定義兩個指針p,q分別指向字符串頭和尾;
2. 再建立一個臨時指針r來存放字符串數組arr的首地址:
3. p,q碰見空格就p++和q–;一直循環直至非空。blog
如圖:
字符串
具體實現Demo:(這裏使用自定義isspace()函數)get
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 }
消除結果以下所示:原型