'的atoi'如果我在字符数组中输入一个3位数的字符,则函数只返回2位数字

时间:2015-03-15 18:44:00

标签: arrays integer atoi

#include <iostream>
using namespace std;
int main()
{
    char myarray[3] = {'0','1','2'};
    int i = atoi(myarray);
    cout<<i<<endl;
}

这个节目只有12但我希望它是012 ... 还有其他功能可以做这件事吗?

1 个答案:

答案 0 :(得分:0)

这有很多问题:

char myarray[3] = {'0','1','2'};

错过了NULL终结符(因此没有什么能够确定字符串结尾的位置)。从字符串初始化的更简单方法就是:

char myarray[] = "012";

这将为您排序长度,并添加NULL终止符。

您没有获得前导零,因为您存储转换结果的类型不知道原始输入数据有多长,或者它有多少前导零......它&# 39; s字面上只是一个数字。如果您还要打印多个前导零,可以使用iostream.width()设置最小宽度,并使用iostream.fill()设置用于填充的字符,例如

cout.width(3); // At least three chars
cout.fill('0');  // Pad with zeroes
cout << i;

我会质疑为什么你需要能够做到这一点; JuniorCompressor的回答似乎更符合您目前的需求。