В моей программе у меня есть массив 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 также получает пустое значение, а не ноль?
Атои вернуть ноль для
Если первая последовательность непробельных символов в str не является
действительное целое число, или если такой последовательности не существует, потому что либо
str пуст или содержит только пробельные символы, без преобразования
выполняется и возвращается ноль.
Также вы требуете для возвращения NULL
невозможно, потому что вы назначаете эти значения в int
а также int
не могу удержаться NULL
,
Так как atoi пытается читать столько, сколько может.
Вы должны использовать strtol вместо этого, вот так:
char* endptr = NULL
char* myString = "OUPS";
long n = strtol(myString, &endptr, 10);
if (*endptr != '\0') {
// ERROR
}
Прочитайте ссылку ссылку для более подробного объяснения (и пример тоже).
Разве это не хорошо?
В C ++ нет значения Integer, записанного как null
NULL в целочисленной форме — только 0.