朋友的一个问题:
给定一个字符,字符的长度为17个,存最大长度为17的号码,现要求将这个号码进行加1,如何进行操作?
由于int型最大只能存4294967296 ,才10位数字,因此不能使用int,而double占8个字节,可以最大保存最大数为18446744073709551616,因此方法如下:
方法一、用double类型存储
char szContNo[17+1];
strcpy(szContNo, "01001234567890123");
double lBNo = 0;
sscanf(szContNo, "%lf", &lBNo); //转换为double型
lBNo++; //计算
char szKeyNext[30];
sprintf(szKeyNext, "%lf", lBNo); //拼构字符
char *pStrPoint = strchr(szKeyNext, '.'); //小数点处理
if (pStrPoint )
{
*pStrPoint = '/0';
}
方法二、用VC中提供的__int64类型存储,文件名应为.CPP,如果定位为.C是不行的
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char szContNo[17+1];
strcpy(szContNo, "01001234567890123");
__int64 lBNo = 0;
sscanf(szContNo, "%I64d", &lBNo);
lBNo++;
char szKeyNext[30];
sprintf(szKeyNext, "%I64d", lBNo);
printf(szKeyNext);
printf("/n");
return 0;
}