C从字符串的一部分中获取数值

C get numeric value from part of string

我的任务是从 char[] 的一部分中获取 long 数值,其中我有其开始和结束的索引。我只是在学习 C,所以我很困惑哪个函数在我的情况下效果最好..

让我说我正在制作函数 getNum():

static char words[100000]; //lets say this is string filled  with many num. values and other stuff.  

long getNum(int begin, int end){
 return (long){part of string starting at words[begin] and ending at words[end]}    
}

我想知道最好的方法和最简单的方法。也非常感谢任何其他评论。

我们给算法,你写代码。同意吗?

好的,所以逻辑应该是

  1. 根据 end-start+1 索引范围创建 char 的数组。
  2. 从源到 end-start 大小的新数组执行 memcpy()
  3. null 终止数组。
  4. 使用strtol()数组转换为数值。

我意识到我不需要数值结尾的索引。

到目前为止,以下解决方案似乎是最简单的:

static char words[100000]; //lets say this is string filled  with many num. values and other stuff.  
static char *endp;

long getNum(int begin){
 return strtol(&words[begin], &endp, 10);    
}

上述 Sourav Ghosh 的解决方案包括使用结束索引