gpt4 book ai didi

c - 试图从 C 中的字符串中删除所有数字

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

我正在尝试从字符串 (char*) 中取出所有数字...

这是我现在拥有的:

    // Take numbers out of username if they exist - don't care about these
char * newStr;
strtoul(user, &newStr, 10);
user = newStr;

我的理解是 strtoul 应该将字符串转换为无符号长整数。不是数字的字符被放入传入的指针(第二个参数)中。当我将用户重新分配给 newStr 并打印它时,字符串保持不变。为什么是这样?有谁知道更好的方法吗?

来自文档示例:

#include <stdio.h>
#include <stdlib.h>

int main()
{
char str[30] = "2030300 This is test";
char *ptr;
long ret;

ret = strtoul(str, &ptr, 10);
printf("The number(unsigned long integer) is %lu\n", ret);
printf("String part is |%s|", ptr);

return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

The number(unsigned long integer) is 2030300
String part is | This is test|

最佳答案

char* RemoveDigits(char* input)
{
char* dest = input;
char* src = input;

while(*src)
{
if (isdigit(*src)) { src++; continue; }
*dest++ = *src++;
}
*dest = '\0';
return input;
}

测试:

int main(void)
{
char inText[] = "123 Mickey 456";
printf("The result is %s\n", RemoveDigits(inText));
// Expected Output: " Mickey "
}

数字已删除。

关于c - 试图从 C 中的字符串中删除所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353173/

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