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>\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 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 #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 }
消除結果如下所示:

