写一个C语言的类似java中对字符串trim的函数
时间: 2023-08-11 22:05:51 浏览: 137
好的,以下是一个简单的C语言函数实现,用于去除字符串的首尾空格:
```c
#include <stdio.h>
#include <ctype.h>
char* trim(char* str)
{
if (str == NULL)
return NULL;
char* start = str;
char* end = str + strlen(str) - 1;
while (isspace(*start))
start++;
while (isspace(*end))
end--;
*(end + 1) = '\0';
return start;
}
```
这个函数的思路是:从字符串的首尾开始遍历,如果遇到空格就跳过,直到遇到第一个非空格字符。然后从尾部开始遍历,同样跳过空格,直到遇到最后一个非空格字符。最后用一个空字符 '\0' 替换掉末尾的空格,返回去除空格后的字符串起始地址。
请注意,这个函数并没有在原始字符串上直接修改,而是返回了一个新的指针,指向去除空格后的字符串。因此,调用者需要自己负责释放掉返回的指针,避免造成内存泄漏。
相关问题
用C语言写一个删除字符串中的空格
### 回答1:
用C语言删除字符串中的空格可以使用字符串函数str_replace(),例如:str_replace (“”,“”,字符串),它将把空格替换为空字符串。另外,也可以使用字符串函数str_trim()来删除字符串中的空格,例如:str_trim(字符串)。
### 回答2:
使用C语言编写一个删除字符串中空格的函数可以按照以下步骤进行:
1. 定义一个空字符串变量,作为存储删除空格后字符串的容器。
2. 使用循环遍历原始字符串,逐个检查每个字符。
3. 判断当前字符是否为空格,如果是空格则跳过,否则将该字符追加到新的字符串中。
4. 继续遍历原始字符串,直到遍历完所有字符。
5. 最后,将删除空格后的新字符串返回。
以下是一个示例代码实现:
```c
#include <stdio.h>
#include <string.h>
void removeSpaces(char* str) {
int i, j;
for (i = 0, j = 0; str[i] != '\0'; i++) {
if (str[i] != ' ') {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100];
printf("输入一个字符串:");
fgets(str, 100, stdin);
removeSpaces(str);
printf("删除空格后的字符串为:%s", str);
return 0;
}
```
这段代码中,我们使用了一个名为 `removeSpaces` 的函数来删除字符串中的空格。通过循环遍历原始字符串,我们跳过所有空格字符,并将非空格字符追加到相同的字符串中。最后,我们将原始字符串中的空格字符替换为 '\0',以确保删除空格后的字符串正确终止。
以上代码可以在控制台中输入字符串,并输出删除空格后的结果。注意,此代码假定输入字符串长度不超过 100 个字符。
### 回答3:
要使用C语言编写一个删除字符串中的空格的程序,可以采用以下方法:
1. 声明一个字符数组变量来存储字符串。
2. 使用`gets()`函数从用户输入中获取字符串,并将其存储在字符数组变量中。
3. 声明一个新的字符数组变量来存储没有空格的字符串,初始化为空字符串。
4. 使用一个循环遍历原始字符串中的每个字符。
5. 在循环内部,检查每个字符是否为空格,如果是,则跳过该字符;如果不是,则将其追加到新的字符数组变量中。
6. 循环结束后,将新的字符数组变量输出为删除了空格的字符串。
以下是一个示例代码:
```c
#include <stdio.h>
void removeSpaces(char* str) {
int i = 0, j = 0;
while (str[i] != '\0') {
if (str[i] != ' ') {
str[j] = str[i];
j++;
}
i++;
}
str[j] = '\0';
}
int main() {
char str[100];
printf("请输入一个字符串:");
gets(str);
removeSpaces(str);
printf("删除空格后的字符串为:%s\n", str);
return 0;
}
```
请注意,该方法只删除了字符串中的空格,如果字符串中存在其他空白字符(如制表符、换行符等),则不会删除它们。如果需要删除其他空白字符,可以将检查条件改为`str[i] == ' ' || str[i] == '\t' || str[i] == '\n'`,以便同时检查并删除这些字符。
C语言中,去除字符串里面的空格的API函数
在C语言中,去除字符串首尾空格通常不直接有一个预定义的API函数,但可以通过自定义函数来实现。这里有两个常见的方法:
1. 使用`strtok()`函数[^1]:
```c
#include <stdio.h>
#include <string.h>
void trim(char *str) {
char *token;
token = strtok(str, " \t\n"); // 分割符可以设置为空格、制表符或换行符
while (token != NULL) {
strcat(str, token); // 逐个添加非空格字符到原字符串
token = strtok(NULL, " \t\n");
}
}
// 示例用法
int main() {
char str[] = " Hello World! ";
trim(str);
printf("%s", str); // 输出: "Hello World!"
return 0;
}
```
2. 手动遍历字符串[^2]:
```c
void trim_manual(char *str) {
int i, len;
len = strlen(str);
if (len > 0 && str[len - 1] == ' ') str[--len] = '\0'; // 移除尾部空格
for (i = 0; i < len; ++i) {
if (str[i] == ' ' || str[i] == '\t' || str[i] == '\n') str[i] = '\0'; // 去除连续空格
}
if (str[0] == ' ') str[0] = '\0'; // 移除开头空格
}
// 示例用法同上
```
以上两种方法都可以帮助你去除C语言字符串中的空格。
阅读全文