gpt4 book ai didi

c - 如何从字符串中提取整数?

转载 作者:行者123 更新时间:2023-12-03 16:55:44 28 4
gpt4 key购买 nike

我正在处理一项任务,作为其中的一部分,我需要从字符串中提取整数。

我试过使用 atoi()函数,但它总是返回 0 ,所以我切换到 strtol() ,但它仍然返回 0 .

目标是从字符串中提取整数并将它们作为参数传递给不同的函数。我正在使用一个函数,然后使用这些值来更新一些数据 ( update_stats )。

请记住,我对 C 语言编程还很陌生,但这是我的尝试:

void get_number (char str[]) {
char *end;
int num;
num = strtol(str, &end, 10);
update_stats(num);
num = strtol(end, &end, 10);
update_stats(num);
}

这样做的目的是在一个字符串中 "e5 d8" (例如)我会提取 58从那个字符串。

字符串的格式始终相同。

我怎样才能做到这一点?

最佳答案

strtol 在字符串中找不到数字。它转换字符串开头的数字。 (它确实跳过了空格,但没有别的。)

如果您需要查找数字的起始位置,可以使用以下方法:

const char* nump = strpbrk(str, "0123456789");
if (nump == NULL) /* No number, handle error*/

( man strpbrk )

如果您的数字可能被签名,您将需要更复杂的东西。一种方法是执行上述操作,然后如果前一个字符是 - 则备份一个字符。但要注意字符串的开头:
if ( nump != str && nump[-1] == '-') --nump;

只是将 - 放入 strpbrk 参数中会在输入上产生错误的匹配,比如 non-numeric7

关于c - 如何从字符串中提取整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850405/

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