编写函数ltrim,用来删除字符串中的前导空格,中间和尾部的空格不删除。例如:字符串为:" A BC DEF ",删除后的结果是"A BC DEF "。要求函数形参采用指针变量
时间: 2024-02-13 17:00:36 浏览: 20
好的,这是一个比较简单的字符串处理题目,以下是函数实现的代码:
```c
void ltrim(char *str) {
if (str == NULL) {
return;
}
char *p = str;
while (*p == ' ') {
++p;
}
if (p == str) {
return;
}
while (*p != '\0') {
*str++ = *p++;
}
*str = '\0';
}
```
这个函数的实现思路比较简单,就是通过指针移动来去掉字符串前面的空格。具体来说,首先先找到第一个非空格字符的位置,然后将这个位置之后的字符移动到字符串的开头处,最后在字符串的结尾处添加一个结束符号 '\0',表示字符串的结束。
相关问题
用C语言编写函数ltrim,用来删除字符串中的前导空格,中间和尾部的空格不删除。例如:字符串为:" A BC DEF ",删除后的结果是"A BC DEF "。要求函数形参采用指针变量。
好的,我可以为您编写这个函数。以下是函数的代码:
```c
#include <stdio.h>
#include <string.h>
void ltrim(char *str) {
int i, j;
int len = strlen(str);
// 找到第一个非空格字符的位置
for (i = 0; i < len && str[i] == ' '; i++);
// 移动剩余字符
if (i > 0) {
for (j = 0; j < len - i; j++) {
str[j] = str[i+j];
}
str[j] = '\0';
}
}
int main() {
char str[] = " A BC DEF ";
printf("Before ltrim: \"%s\"\n", str);
ltrim(str);
printf("After ltrim: \"%s\"\n", str);
return 0;
}
```
输出结果为:
```
Before ltrim: " A BC DEF "
After ltrim: "A BC DEF "
```
在这个函数中,我们首先使用 `strlen` 函数获取字符串的长度,然后使用一个循环查找第一个非空格字符的位置。如果该位置不是字符串的开头,我们就将剩余的字符向前移动,覆盖掉前面的空格。最后,我们在字符串的末尾添加一个空字符,以确保字符串的终止。
本关任务:编写函数ltrim,用来删除字符串中的前导空格,中间和尾部的空格不删除。例如:字符串为:" A BC DEF ",删除后的结果是"A BC DEF "。要求函数形参采用指针变量。
好的,我来为您编写这个函数。
```c
void ltrim(char *str) {
// 首先找到第一个非空格字符的位置
int i = 0;
while (str[i] == ' ') {
i++;
}
// 将非空格字符往前移动
int j = 0;
while (str[i] != '\0') {
str[j] = str[i];
i++;
j++;
}
// 在末尾添加结束符
str[j] = '\0';
}
```
这个函数会找到第一个非空格字符的位置,然后将其及其之后的字符往前移动,最后在末尾添加结束符。这样就可以删除字符串中的前导空格了。
阅读全文