Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从字符串中提取负数_C - Fatal编程技术网

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++;
       }
   }