比如
id_1 = "01223698797465646"
id_2 = "01223368956456456"
我的办法是这些数字一个一个的比较,就像strcmp()函数,我看到有人直接用atoi()或者strtol()进行比较,我想这是错误的,引文atoi(id_1)是不是得到一个负数,int不能表示这么大的数,有没有更好地解决办法呢?
比如
id_1 = "01223698797465646"
id_2 = "01223368956456456"
我的办法是这些数字一个一个的比较,就像strcmp()函数,我看到有人直接用atoi()或者strtol()进行比较,我想这是错误的,引文atoi(id_1)是不是得到一个负数,int不能表示这么大的数,有没有更好地解决办法呢?
预处理加上c99扩展
CFLAGS=-std=gnu99
这样可以在32位机器上使用strtoll函数,得到off_t类型的整数,即long long int(64位)。这个范围,够了吧。。。
函数原型是
long long strtoll(const char *restrict str, char **restrict endptr, int base)
不过,个人还是觉得当作字符串来处理比较省事。
如果是因为ID号数字太大不能
Int
的话我的想法是先拆分成几段(这个ID号貌似两段就行了吧),然后再从左到右进行比较,如果A[1]>B[1],则A>B,若A[1]=B[1],则可以用递归继续判断第二段的大小~