C語言trim()實現
阿新 • • 發佈:2019-01-09
如題,程式碼如下:
#include <stdlib.h> #include <string.h> #include <stdio.h> //空白字元有: ' '(中間是空格), \t, \r, \n char* trim(char *str) { int first = -1; //第一個空白字元的下標 int last = -1; //最後一個空白字元的下標 //找到第一個非空白字元 for (int i = 0; str[i] != '\0'; i++) { if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && str[i] != '\r') { first = i; break; } } if (first == -1) { //全是空白字元 str[0] = '\0'; return str; } //儲存最後一個非空白字元的指標 for (int i = first; str[i] != '\0'; i++) { if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && str[i] != '\r') { last = i; } } //在最後一個非空白字元的後面賦值'\0' str[last + 1] = '\0'; return str + first; } int main() { //測試資料 char strs[][40] = { "", " ", " akklp ", " fsj dfk ", " aaaa\t \r\nbbbb \t \r \n " }; //注意\r是回到當前行的開頭,利用\r能夠覆寫已經列印的字元 for (int i = 0; i < 5; i++) { char *res = trim(strs[i]); printf("#%s#\n", res); } return 0; }
實現效果如圖: