C语言实现去除字符串首尾空格

标准库

1
2
3
4
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

Left Trim 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char *ltrim(char *str)
{
if (str == NULL || *str == '\0')
{
return str;
}
int len = 0;
char *p = str;
while (*p != '\0' && isspace(*p))
{
++p;
++len;
}
memmove(str, p, strlen(str) - len + 1);
return str;
}

Right Trim 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char *rtrim(char *str)
{
if (str == NULL || *str == '\0')
{
return str;
}
int len = strlen(str);
char *p = str + len - 1;
while (p >= str && isspace(*p))
{
*p = '\0';
--p;
}
return str;
}

Trim 实现

1
2
3
4
5
6
char *trim(char *str)
{
str = rtrim(str);
str = ltrim(str);
return str;
}

参考

本文主要参考以上文章,一些成果归功于原文作者。