1

假设我们在 c 中有一个字符数组,例如,

char a[20];

我们可以像这样访问索引 20 来放置终止 NULL。

a[20]='\0';

但在我的算法中。(“这是整数到 char 数组转换器”)如果最后一个索引小于 char 数组的大小,则必须将终止 NULL,例如,

如果我的 int 的大小为 4(“1421”),那么我必须将“1”放在索引 0 处,将“4”放在索引 1 处,将“2”放在索引 2 处,将“1”放在索引 3 处。

最后在索引 4 处终止 NULL

index=4;
a[index]='\0';

修复相同代码的另一种方法,

if(index<20)  (Will increase one condition)
    a[index]='\0';

但我只是想知道是否有可能......将终止 NULL 放在索引 20 处。

好的,我得到了每个人的帮助,非常感谢您的帮助。

4

3 回答 3

3

一个数组char a[20]有 20 个字符的空间,索引从 0 到 19。写入a[20]是在数组外部写入,并且会产生不可预知的后果。限制为 20 个字符,包括任何终止NULL 字符。如果您需要 20 个字符加上终止 NULL 的空间,则需要将数组声明为char a[21];. 此外,声明a[20]不会在任何地方放置 NULL。

于 2013-02-24T08:37:24.690 回答
1

char a[20]: 20 表示您可以从0-19. 并且假设您最多只能使用 19。如果您最多填写 20,那么您将收到错误消息。

将其更改为:

a[20+1] => a[21]现在你可以用 20 来放\0.a[20]='\0'

@AnkeshKushwah 的代码

int main()
{
char arr[4]="hell";  
printf("%c",arr[4]); // here you will see garabage. 
printf("%c",arr[5]); // here is the terminating character. after 4.
char arr[]="hell";   
printf("%c",arr[4]); // here you will see terminating character.Because hell will take 
                        0-3 and 4 contains \0 
getch();
}
于 2013-02-24T08:37:57.463 回答
0

考虑用全零初始化您的 char 数组:char a[20] = { 0 };

这样,无论你写了多少个字符(最多 19 个),你总是以 null 结尾。

于 2013-02-24T08:40:36.630 回答