- 论坛徽章:
- 0
|
在抽取网页数据的时候,需要用到trim, 一高兴自己写了个。
设计思路:
1. 如果行首没有' ', '\t', '\r', '\n', 这些字符, 则向后移动到行尾,
2. 如果行首包含以上字符,则使用后面的字符去覆盖前面的字符。
3. 循环完成后,再从后向前清除行尾的字符。- /*
- * Trim String
- */
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
- inline int _trim_isprint(char c)
- {
- switch (c) {
- case ' ':
- return 1;
- case '\t':
- return 1;
- case '\r':
- return 1;
- case '\n':
- return 1;
- default:
- return 0;
- }
- }
- void trim(char *str)
- {
- char *i;
- char *j;
- if (str != NULL) {
-
- i = str;
- for (j=i; *j; j++) {
- if (i == str) {
- if (!_trim_isprint(*j)) {
- *i++ = *j; /* 找到第一个可打印字符 */
- }
- } else {
- if (i == j) {
- i++; /* i, j 在相同的位置, i++ */
- } else {
- *i++ = *j; /* 复制字符j, 到字符i */
- }
- }
- }
-
- /* 清除行尾的非打印字符 */
- if (i != str) {
- while (_trim_isprint(*(i-1))) {
- i--;
- }
- }
- *i = '\0';
- }
- }
复制代码 |
|