将ITOA与整数一起使用.设置缓冲区的限制

using itoa with an integer . Setting limits of a buffer

本文关键字:缓冲区 设置 ITOA 整数 一起      更新时间:2023-10-16

我正在使用 itoa浏览此示例,并想了解更多有关语句

char buffer [sizeof(int)*8+1];

作者为什么要进行[sizeof(int)*8+1]?我了解sizeof(int),但是作者为什么要进行*8+1

这是代码

#define _OPEN_SYS_ITOA_EXT
#include <stdio.h>
#include <stdlib.h>
int main ()
{
   int i;
   char buffer [sizeof(int)*8+1];
   printf ("Enter a number: ");
   if (scanf ("%d",&i) == 1) {
      itoa (i,buffer,DECIMAL);
      printf ("decimal: %sn",buffer);
      itoa (i,buffer,HEX);
      printf ("hexadecimal: %sn",buffer);
      itoa (i,buffer,OCTAL);
      printf ("octal: %sn",buffer);
   }
   return 0;
}

我从这里得到了这个示例

如果您有 int,则其二进制数字的数量为 sizeof(int) * CHAR_BIT。由于通常CHAR_BIT是8,只要char buffer [sizeof(int)*8+1];就会进行浏览,可以存储有效的C弦乐所需的二进制数字和终止的null字符。

这是C风格的字符串。这些字符串是无效的。例如字符串" Hello"将包含字符'H','e','l','l','o'和' 0'。

1用于null字符' 0'。