如何用前导零填充数组?
Posted
技术标签:
【中文标题】如何用前导零填充数组?【英文标题】:How do I pad an array with leading zeroes? 【发布时间】:2018-10-14 21:58:18 【问题描述】:我是 C++ 新手,并试图用前导零填充字符数组。我见过用填充零打印的答案,但我想直接填充数组。
在这种情况下,我有一个大小为[20]
的数组。所以如果我输入123456789
,这个数字会被11个零填充,00000000000123456789
会被打印出来。或者如果输入为 1,则将附加 19 个前导零并打印 00000000000000000001
。
char input[20];
int main ()
cout << "Enter a number - ";
cin >> input; // Eg. "12"
//*code here*
printf("%s\n", input); // Prints "00000000000000000012"
应该有一种简单的方法可以做到这一点,但我就是找不到。到目前为止我尝试过的代码是这样的......
for (int i = 0; i < number_of_zeroes; i++) //pad with zeroes
input[i] = '0';
但这只是用零覆盖输入。我想插入零。
【问题讨论】:
你是怎么解决的? C 还是 C++?下定决心。 然后使用std::string。 出于我想要使用代码的目的,我宁愿坚持上面的代码格式。 更简单的方法,需要使用预定义的函数试试this 【参考方案1】:感谢 Chetan Tamboli 提供的链接,我能够解决自己的问题。
char input[20];
char newinput[20];
int main ()
cout << "Enter a number - ";
cin >> input;
sprintf(newinput,"%020s",input);
printf("%s\n",newinput);
感谢所有帮助过的人!我真的很感激。
【讨论】:
这会导致未定义的行为;0
printf 格式标志仅对数字转换有效。如果它看起来对你有用,那要么是意外,要么是你的系统实现的非标准扩展。
我明白了,那么您将如何改进这个答案?这对我来说似乎工作得很好。
您可以在另一个问题的答案中使用“chux”建议的代码以上是关于如何用前导零填充数组?的主要内容,如果未能解决你的问题,请参考以下文章