C 如何从字符串中提取负数
我需要帮助从字符中提取数字。 假设我有:C 如何从字符串中提取负数,c,C,我需要帮助从字符中提取数字。 假设我有: char str = " ( 1 22 -4)"; 我需要提取每个整数并调用另一个方法 while (*p) { if (isdigit(*p)) { int val = strtol(p, &p, 10); on_int(val); } else { p++; } } 我已经成功地提取了整数,但我不知道如何提取负数 通过这段代码,我提取了1、
char str = " ( 1 22 -4)";
我需要提取每个整数并调用另一个方法
while (*p) {
if (isdigit(*p)) {
int val = strtol(p, &p, 10);
on_int(val);
} else {
p++;
}
}
我已经成功地提取了整数,但我不知道如何提取负数
通过这段代码,我提取了1、22和4。如何获得4前面的负数?您应该更改条件以适应负数,如下所示:
if ((p[0] == '-' && isdigit(p[1]))|| isdigit(p[0])) ...
我不明白这个问题,确切地说-如果第一个字符是“-”,你不能把结果乘以-1吗?但是,这就引出了一个问题,即是否应该允许--4、--4等作为输入。谢谢您的格式帮助!我想不出来!格式很简单。如果(*p='-'&&isdigit(p[1]))| isdigit(*p)),那么说
可能会简单一些。这样,您根本不必比较结束指针。@KevinBallard您是对的,它甚至在结束位置也能工作!这一点现已更新。谢谢假设我们有:char str=“--1”
这检测4个不同的数字。你怎么避开这个?不,它不亮<代码>“-”
将使此条件失败,因为p[1]不是数字。
while (*p) {
if (isdigit(*p) || ( (*p == '-' || *p == '+') && isdigit(*(p+1)) )) {
int val = strtol(p, &p, 10);
on_int(val);
} else {
p++;
}
}