gpt4 book ai didi

c - 删除空格和制表符的功能

转载 作者:太空宇宙 更新时间:2023-11-04 08:03:26 25 4
gpt4 key购买 nike

我正在尝试制作一个函数,从给定字符串中删除空格和制表符,但字符串中的第一个制表符或空格除外。当我使用我的函数时,它会删除除第一个空格和制表符之外的空格和制表符,但它还会删除第一个空格或制表符之后的第一个字母。例如 > "ad ad ad"> "ad dad"而不是 "ad adad"这是为什么?

void RemoveSpacetab(char* source) {
char* i = source;
char* j = source;
int spcflg = 0;

while(*j != 0) {
*i = *j++;

if((*i != ' ') && (*i != '\t'))
i++;
if(((*i == ' ') || (*i == '\t')) && (spcflg == 0)) {
i++;
spcflg = 1;
}
}
*i = 0;
}

最佳答案

您需要将源数组和目标数组分开,因为它们的长度会不同。您可以在像这样复制字符之前找到起始位置,假设您将源和源的长度作为 char* source, int length 传递(您也可以使用 计算源的长度code>strlen(source),那么您的函数可能如下所示:

int i = 0;
char* dest = malloc(sizeof(char) * length);
// Increment i until not space to find starting point.
while (i < length && (source[i] == '\t' || source[i] == ' ')) i++;

int dest_size = 0;
while (i < length) {
if (source[i] != '\t' && source[i] != ' ') {
// Copy character if not space to dest array
dest[dest_size++] = source[i];
}
i++;
}
dest[dest_size++] = 0; // null terminator
// Feel free to realloc to the right length with
// realloc(dest, dest_size * sizeof(char))
return dest;

关于c - 删除空格和制表符的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44444195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com