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

时间:2015-05-26 12:04:52

标签: c string int long-integer strtol

我的任务是从long的一部分获取char[]数值,其中我有其开始和结束的索引。我只是在学习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]}    
}

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

2 个答案:

答案 0 :(得分:0)

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

好的,所以逻辑应该是

  1. 根据char索引范围创建一个end-start+1的数组。
  2. end-start尺寸的来源到新数组执行memcpy()
  3. null-terminate数组。
  4. 使用strtol()数组转换为数值。

答案 1 :(得分:0)

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

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

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的解决方案,包括使用结束指数