本关任务:编写函数ltrim,用来删除字符串中的前导空格,中间和尾部的空格不删除。例如:字符串为:" A BC DEF ",删除后的结果是"A BC DEF "。要求函数形参采用指针变量。 编程要求 根据提示,在右侧编辑器补充代码,删除字符串中的前导空格。 测试说明 平台会对你编写的代码进行测试: 测试输入: A BC DEF (A前面有4个空格,F后面有1个空格) 预期输出:A BC DEF (A前面没有空格,F后面有1个空格)
时间: 2024-03-11 21:51:09 浏览: 138
好的,下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
char* ltrim(char *s) {
int len = strlen(s);
char *p = s;
while (*p == ' ') {
p++;
}
if (p != s) {
memmove(s, p, len - (p - s) + 1);
}
return s;
}
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, 100, stdin);
ltrim(str);
printf("去除前导空格后的字符串为:%s\n", str);
return 0;
}
```
在代码中,我们定义了一个 `ltrim` 函数,该函数接收一个字符指针变量作为形参,表示要删除前导空格的字符串。我们先通过 `strlen` 函数获取字符串的长度,并定义一个 `p` 指针指向字符串的开头,然后通过循环遍历字符串,将指针不断后移,直到遇到第一个非空格字符为止。如果指针移动了,则说明字符串中存在前导空格,我们可以通过 `memmove` 函数将指针后移的字符串部分移动到字符串开头,从而删除前导空格。最后返回字符串的指针。
在 `main` 函数中,我们先定义一个字符数组 `str`,并通过 `fgets` 函数获取用户输入的字符串。然后调用 `ltrim` 函数删除前导空格,并通过 `printf` 函数输出结果。
需要注意的是,由于用户输入的字符串中可能存在换行符,因此我们在 `fgets` 函数中指定了最大读取长度和输入流为标准输入 `stdin`,以避免出现意外情况。
阅读全文