2015-05-26 3 views
-2

Моя задача - получить long числовое значение из части char[], где у меня есть индекс его начала и окончания. Я только учусь C, так что это сбивает с толку меня, какая функция работает лучше в моем случае ..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]}  
} 

Я хотел бы знать, лучший способ и самый простой метод для этого. Любые другие комментарии также очень ценятся.

+0

К сожалению, я не считая 'code' в вопросе, как реальные усилия. –

+0

Взгляните на 'atoi'. [LINK] (http://www.codingunit.com/c-reference-stdlib-h-function-atoi-convert-a-string-to-an-integer) – LPs

+0

@SouravGhosh слишком минимальный для минуты вашего времени: //? – hou

ответ

0

Мы приводим алгоритм, вы пишете код. Согласен?

ОК, так что логика должна быть

  1. создать массив char с на основе диапазона end-start+1 индекса.
  2. сделайте memcpy() от источника до нового массива размером end-start.
  3. null-terminate массив.
  4. использовать strtol() для преобразования массива в числовое значение.
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 Гош в выше, чтобы включить использование окончание индекса

+0

Публикация примеров ввода данных. – chux

+0

Это неправильно. не принимайте 'end' как _end-of_string_for_conversion_. Прочтите страницу руководства, с которой я связан правильно. –

+0

@chux Я думаю, что локальный «конец» затеняет глобальный «конец». :-) –