使用 char* 存储整数
Using char* to store integers
我正在尝试将整数转换为存储在char *s
中的数字字符串。
char* ItoA(int n, char *s){
int mod = n;
for(int x = 1; x <= sizeof(n) + 2; x++){
int digit = mod % 10;
s[x-1] = digit;
mod = mod / 10;
}
return s;
}
void main(){
int n = 12345;
char s3;
// should print 12345
cout << "n" << ItoA(n, &s3);
cin.get();
}
我知道我的符号有问题,因为我不断得到一个垃圾数组作为 main 的输出。为什么我得到的是垃圾而不是"12345"?
问:为什么我得到垃圾而不是"12345"?
您正在使用&s3
,就好像它是一个字符数组一样。
用:
int main(){
int n = 12345;
char s3[20]; // Use an array of characters large enough to hold the number.
// should print 12345
cout << "n" << ItoA(n, s3);
cin.get();
}
另外,我不清楚您在下面使用sizeof(n)
逻辑是什么:
for(int x = 1; x <= sizeof(n) + 2; x++)
为了将数字转换为字符串,您需要通过添加字符 '0'
转换为 ASCII。此外,您需要分配足够的内存来存储所有字符并初始化内存。最后,你的 for 循环的逻辑被打破了,通常更容易向后构造字符串,然后反转它。
#include <iostream>
#include <string.h>
using namespace std;
char* ItoA(int n, char *s, int bufLength){
// Create the string in reverse order
int i;
for(i = 0; i < bufLength; i++){
int digit = n % 10;
s[i] = digit + '0';
n /= 10;
if (n == 0) break;
}
// Reverse the string.
for (int j = 0; j <= i / 2; j++) {
char c = s[j];
s[j] = s[i - j];
s[i - j] = c;
}
return s;
}
int main(){
int n = 12345;
char s3[6];
memset(s3, 0, 6);
// should print 12345
cout << "n" << ItoA(n, s3, 6);
cin.get();
}
相关文章:
- 添加存储在向量中的大整数的函数出现问题
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 从文件中读取后,将分号分隔的整数存储到数组中
- 将25个甚至整数存储到一个名为intlist的整数阵列中,然后在屏幕上显示数组,并在屏幕上显示名为fivintegers
- 如何将整数存储在字符阵列中
- 将 10 个整数存储到数组C++中时出现问题
- 将多个整数存储在字符串中
- 将多个整数存储到数组中并打印出来
- 如何将用户输入的 5 个整数存储在数组中并打印出整个数组
- 在 c++ 中将随机生成的整数存储为变量
- 如何将整数存储在字符数组的单个索引中
- C++ 读取文件并将整数存储在向量中.最终占用的驻留内存大约是实际文件大小的 5 倍
- 如何将.txt文件中的特定整数存储在结构数组中
- 将文件中的64*64整数存储到2D数组中
- C++将多个整数存储在一个int变量中