任意长度的整数的存储问题

时间:2021-11-14 04:41:10
在C++中,我想对从键盘上输入的任意长度的一整数存储到一个一维数组中,

例如:我输入12345,那么数组中数的存储情况为:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5.

最关键的是这个整数是任意长度的,开始是不确定,希望各位高手帮忙!

10 个解决方案

#1


数组可容纳的最大量是 uint.maxvalue,32 位机上是 4294967295,是不是够大了?

#2


你只需要申请足够大的数组就可以了,也只能这样。

#3


你随便搜索一下高精度运算,代码讲解是一片片的。。

#4


读入的时候用字符读然后-'0'在存入int数组...

#5


一个方法:
以字符格式读进你输入的数,如12345.
然后strlen这个字符串,然后动态创建对应个数的数组malloc,最后将字符串的对应字符存储到这个数组中。

#6


你当做字符来处理不就完了么?
把你的数组定义为字符数组,输的时候,用%c,这样也不影响输入的样式

#7


C++对C函数也是兼容的

#8



int main()
{
char *s;//可以当作数组来用
s=new char[255];//s=(char*)malloc(255);//申请“足够大”的空间,即使不知道确切的位数,但总是知道一个大概的数量的
gets(s);//从键盘读入字符串
int len=strlen(s);//计算字符数
printf("%s\n",s);//以字符串输出
for(int i=0;i<len;i++)
printf("%c",*(s+i));//printf("%c",s[i]);//按字符输出
delete []s;//和malloc()对应的用free(s);
s=0;
return 0;
}

#9


引用楼主 lijian8552 的帖子:
在C++中,我想对从键盘上输入的任意长度的一整数存储到一个一维数组中, 

例如:我输入12345,那么数组中数的存储情况为:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5. 

最关键的是这个整数是任意长度的,开始是不确定,希望各位高手帮忙!



这个问题还是有办法解决的,方法是从键盘缓冲区中直接取字符数就行了,如何从键盘缓冲区中取字符数?从stdin这个FILE结构中提取即可,stdin的结构不同系统可能会有不同,具体内容在stdio.h头文件找找就知道了。以VC为例,_cnt成员保留了缓冲区中当前的字符数量,_base成员是缓冲区首地址,示例代码如下:

char *cpBuffer;
int iCount;
cin.get();          //随便用一个输入都可
iCount = stdin->_cnt;  //取得字符数量
cpBuffer = new char[iCount + 1];  //加1是考虑\0
memcpy(cpBuffer, stdin->_base, iCount?iCount:1);  
*(cpBuffer+iCount) = '\0';

原理是这样了,可根据你的环境自行作些修改。

#10


引用 9 楼 supermegaboy 的回复:
引用楼主 lijian8552 的帖子:
在C++中,我想对从键盘上输入的任意长度的一整数存储到一个一维数组中, 

例如:我输入12345,那么数组中数的存储情况为:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5. 

最关键的是这个整数是任意长度的,开始是不确定,希望各位高手帮忙! 




这个问题还是有办法解决的,方法是从键盘缓冲区中直接取字符数就行了,如何从键盘缓冲区中取字符数?从stdin这个FILE结构中提取即可,stdin的结构不…


学习

#1


数组可容纳的最大量是 uint.maxvalue,32 位机上是 4294967295,是不是够大了?

#2


你只需要申请足够大的数组就可以了,也只能这样。

#3


你随便搜索一下高精度运算,代码讲解是一片片的。。

#4


读入的时候用字符读然后-'0'在存入int数组...

#5


一个方法:
以字符格式读进你输入的数,如12345.
然后strlen这个字符串,然后动态创建对应个数的数组malloc,最后将字符串的对应字符存储到这个数组中。

#6


你当做字符来处理不就完了么?
把你的数组定义为字符数组,输的时候,用%c,这样也不影响输入的样式

#7


C++对C函数也是兼容的

#8



int main()
{
char *s;//可以当作数组来用
s=new char[255];//s=(char*)malloc(255);//申请“足够大”的空间,即使不知道确切的位数,但总是知道一个大概的数量的
gets(s);//从键盘读入字符串
int len=strlen(s);//计算字符数
printf("%s\n",s);//以字符串输出
for(int i=0;i<len;i++)
printf("%c",*(s+i));//printf("%c",s[i]);//按字符输出
delete []s;//和malloc()对应的用free(s);
s=0;
return 0;
}

#9


引用楼主 lijian8552 的帖子:
在C++中,我想对从键盘上输入的任意长度的一整数存储到一个一维数组中, 

例如:我输入12345,那么数组中数的存储情况为:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5. 

最关键的是这个整数是任意长度的,开始是不确定,希望各位高手帮忙!



这个问题还是有办法解决的,方法是从键盘缓冲区中直接取字符数就行了,如何从键盘缓冲区中取字符数?从stdin这个FILE结构中提取即可,stdin的结构不同系统可能会有不同,具体内容在stdio.h头文件找找就知道了。以VC为例,_cnt成员保留了缓冲区中当前的字符数量,_base成员是缓冲区首地址,示例代码如下:

char *cpBuffer;
int iCount;
cin.get();          //随便用一个输入都可
iCount = stdin->_cnt;  //取得字符数量
cpBuffer = new char[iCount + 1];  //加1是考虑\0
memcpy(cpBuffer, stdin->_base, iCount?iCount:1);  
*(cpBuffer+iCount) = '\0';

原理是这样了,可根据你的环境自行作些修改。

#10


引用 9 楼 supermegaboy 的回复:
引用楼主 lijian8552 的帖子:
在C++中,我想对从键盘上输入的任意长度的一整数存储到一个一维数组中, 

例如:我输入12345,那么数组中数的存储情况为:a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5. 

最关键的是这个整数是任意长度的,开始是不确定,希望各位高手帮忙! 




这个问题还是有办法解决的,方法是从键盘缓冲区中直接取字符数就行了,如何从键盘缓冲区中取字符数?从stdin这个FILE结构中提取即可,stdin的结构不…


学习