ноль в Atoi преобразует значение в 0

В моей программе у меня есть массив char (char data []), из которого я должен извлечь данные и сохранить их в целочисленной переменной (value). Для этого я использовал atoi в своей программе. Проблема в том, что я иногда получаю значение null в массиве char (data). Если я использую atoi для этого значения, я получаю значение 0 в целочисленной переменной вместо (null)

Реальная функция довольно большая, и я не могу опубликовать весь код здесь. От функции, упомянутой ниже, я надеюсь, что вы, ребята, получите некоторое представление о том, что я делаю здесь.

Get_Data(char data[])
{
int value;
value = atoi(p);
}

Недавно я прочитал, что мы должны использовать strtol вместо atoi. Я тоже это попробовал. но я все еще получаю 0 в значении переменной.

Я хочу знать, какую функцию я должен использовать, чтобы получить (ноль) в целочисленной переменной значение?

Здесь я имею в виду пустой массив символов

Пожалуйста, предоставьте решения, специфичные для проблемы. В приведенной выше функции, если данные получают пустое значение char, как я могу убедиться, что моя переменная int также получает пустое значение, а не ноль?

-2

Решение

Атои вернуть ноль для

Если первая последовательность непробельных символов в str не является
действительное целое число, или если такой последовательности не существует, потому что либо
str пуст или содержит только пробельные символы, без преобразования
выполняется и возвращается ноль.

Также вы требуете для возвращения NULL невозможно, потому что вы назначаете эти значения в int а также int не могу удержаться NULL,

2

Другие решения

Так как atoi пытается читать столько, сколько может.

Вы должны использовать strtol вместо этого, вот так:

char* endptr = NULL
char* myString = "OUPS";
long n = strtol(myString, &endptr, 10);

if (*endptr != '\0') {
// ERROR
}

Прочитайте ссылку ссылку для более подробного объяснения (и пример тоже).

1

Разве это не хорошо?

В C ++ нет значения Integer, записанного как null

NULL в целочисленной форме — только 0.

1
По вопросам рекламы [email protected]