如何用前导零填充数组?

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”建议的代码

以上是关于如何用前导零填充数组?的主要内容,如果未能解决你的问题,请参考以下文章

python如何用零填充numpy数组

如何用 JQ 填充数字?

如何用 0(零)填充整数? [复制]

用字母和符号填充

如何用零填充 pandas groupby 列表的缺失日期?

Python列表,长度为7。如何用零和一填充数据