Строковые литералы имеют тип const char[]
, который при вызове функции затухает до const char *
, поэтому вы должны сделать сигнатуру вашей функции double get_value(const char *)
.
Во-вторых, когда вы разыменовываете *get_type
, вы получаете один символ , а не всю строку! И затем вы пытаетесь сравнить этот символ с массивом (который снова распадается на указатель) - это не работает. Что вам нужно, это strcmp
(или его вариант):
if (!strcmp(get_type, "short_value")) { ... }`
Если вы предпочитаете, вы можете сказать strncmp(get_type, "short_value", 12)
и сравнить только начальные 12 символов, которые равны длине «short_value», включая завершающий нулевой байт - не обязательно, но полезно знать о длине строки, когда используя функции манипуляции со строками.