在C语言中,删除字符串的前导和尾随空格而不引起内存泄漏,可以通过以下步骤实现:
以下是一个示例函数,它可以删除字符串的前导和尾随空格:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void trim(char *str) {
if (str == NULL) return;
int len = strlen(str);
int start = 0, end = len - 1;
// 删除前导空格
while (start <= end && isspace(str[start])) start++;
// 删除尾随空格
while (end >= start && isspace(str[end])) end--;
// 移动字符串并添加终止符
if (start > 0 || end < len - 1) {
int newLen = end - start + 1;
memmove(str, str + start, newLen);
str[newLen] = '\0';
}
}
int main() {
char str[] = " Hello, World! ";
printf("Original string: '%s'\n", str);
trim(str);
printf("Trimmed string: '%s'\n", str);
return 0;
}
memmove
函数将有效字符移动到字符串的开头,并更新字符串的终止符。memmove
时,确保目标区域不会超出原字符串的范围。通过这种方式,可以在不引起内存泄漏的情况下有效地删除C语言字符串中的前导和尾随空格。
领取专属 10元无门槛券
手把手带您无忧上云