我正在处理一项任务,作为其中的一部分,我需要从字符串中提取整数。
我试过使用`atoi()`函数,但它总是返回0,所以我转而使用`strtol()`函数,但它仍然返回0。
目标是从字符串中提取整数,并将它们作为参数传递给另一个函数。我正在使用一个函数来使用这些值来更新一些数据(`update_stats`)。
请记住我在C语言编程方面还相对新手,但这是我的尝试:
我试过使用`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"
(例如)中提取出5
和8
。
该字符串的格式始终相同。
我应该如何做到这一点?
isdigit
函数来跳过所有非数字字符,然后再使用strtol
函数。 - Bodoatoi
和strtol
都期望接收指向数字的第一个字符的指针——您的指针必须已经指向数字。当基数为10时,“e”和“d”都不是数字。要在字符串中找到数字,您应编写代码检查每个字符以确定它是否为数字。一旦找到数字,您可以将其(仅一个数字)或数字序列(多个数字)转换为数字,具体取决于您的需求。 - Eric Postpischilstrtol
函数并不是正确的找到“5”并将其转换为数字的方法。 - Eric Postpischil