我正在编写一个程序,其中我需要将字符数组转换为整数。但是,我需要利用所有整数的全部潜力(在int
课程类型的能力范围内)(即:正、负和 0),而不是仅仅使用正整数。但是我需要访问一些哨兵值,最好是在 typeint
中。float
如果可以避免的话,我不想为了使用一个非整数哨兵而制作所有东西。
为了暂时解决这个问题,我一直在使用以下“技巧”:(token
数组在哪里)
int TokenToInt(char token[])
{
int current=0, value=0;
char isNeg = 'F';
if (token[current] == '-') {
isNeg = 'T';
current++;
}
while (1) {
if (isdigit(token[current]) == 0)
return -1;
else {
value *= 10;
value += token[current]-'0';
}
current++;
}
if (isNeg == 'F') return value;
if (isNeg == 'T') return -1 * (value + 1);
}
因此,在程序的其余部分中,您将-1
用于错误检查,一旦完成,如果返回值是负数,则增加返回值。哪个有效,除非用户输入-2^15
,但最好不能输入-1
,对吧?
但它也很麻烦,并且有点令人困惑,只是随机增加值。那么我应该坚持使用这种 ^ 方法还是有替代方法可以完成相同的任务?如果有替代方案,这个替代方案是什么?