c语言第1关:去掉字符串首尾空格
时间: 2023-06-22 14:18:07 浏览: 418
可以使用C语言中的库函数 `isspace()` 和 `strcpy()` 来去掉字符串首尾空格,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void trim(char *s) {
char *p = s;
int len = strlen(p);
while (isspace(p[len - 1])) p[--len] = 0;
while (*p && isspace(*p)) ++p, --len;
memmove(s, p, len + 1);
}
int main() {
char s[] = " hello world ";
trim(s);
printf("%s\n", s); // 输出"hello world"
return 0;
}
```
这里的 `trim()` 函数采用了双指针的方式,先去掉字符串尾部的空格,再去掉字符串头部的空格,最后使用 `memmove()` 函数将去掉空格后的子串移动到字符串的开头。
相关问题
c语言去掉字符串首尾空格
在 C 语言中,要去掉字符串首尾的空格,可以采用以下几种方法:
1. **使用 `strtok` 函数**:
使用 `strtok` 函数配合 `'\0'` 分割符遍历字符串,找到非空格字符并连接起来。不过这种方法需要额外的空间存储处理结果。
```c
char *removeSpaces(char *str) {
char *token = strtok(str, " \t");
if (!token) return str; // 如果整个字符串都是空格,返回原串
char result[50]; // 假设最大长度为49(含结束符)
strcpy(result, token);
while ((token = strtok(NULL, " \t"))) {
strcat(result, " ");
strcat(result, token);
}
return result;
}
```
2. **循环遍历字符串**:
可以从头到尾遍历字符串,当遇到非空格字符时就添加到新字符串中,最后删除末尾多余的空格。
```c
#include <ctype.h> // for isspace()
void removeSpacesFromEnd(char *str) {
int len = strlen(str);
for (int i = len - 1; i >= 0 && isspace(str[i]); i--) {} // 找到第一个非空格字符的前一个位置
str[i + 1] = '\0'; // 在非空格字符处截断
}
// 去除首尾空格
void removeSpacesBoth(char *str) {
removeSpacesFromEnd(str);
removeSpacesFromEnd(str); // 再次去除可能存在的尾部空格
}
```
以上两种方法都可以达到目的,具体选择哪种取决于实际需求和项目风格。
C语言去除字符串首尾的空格
在C语言中,去除字符串首尾的空格可以通过编写一个函数来实现。这个函数遍历字符串,找到字符串开头和结尾的非空格字符,然后将开头的空格用第一个非空格字符替换,并将结尾的非空格字符后面添加一个字符串结束符'\0'。以下是一个简单的实现示例:
```c
#include <stdio.h>
#include <string.h>
void trim_spaces(char *str) {
int start, end;
if (str == NULL) {
return;
}
// 找到第一个非空格字符的位置
for (start = 0; str[start] != '\0' && isspace(str[start]); ++start);
// 找到最后一个非空格字符的位置
for (end = strlen(str) - 1; end >= 0 && isspace(str[end]); --end);
// 如果字符串全为空格或只包含一个空格,则结束字符串
if (start > end) {
str[0] = '\0';
} else {
// 将开头的空格用第一个非空格字符替换
char *src = str + start;
char *dst = str;
while (*src != '\0') {
*dst++ = *src++;
}
// 在结尾添加字符串结束符
dst[end - start] = '\0';
}
}
int main() {
char myString[] = " Hello, World! ";
trim_spaces(myString);
printf("Trimmed string: [%s]\n", myString);
return 0;
}
```
这段代码定义了一个`trim_spaces`函数,它接受一个字符串参数并去除其首尾的空格。在`main`函数中,我们创建了一个包含前后空格的字符串,并调用`trim_spaces`函数来处理它,然后输出处理后的结果。
阅读全文