gpt4 book ai didi

c - C 中的字符串不以空字符结尾

转载 作者:行者123 更新时间:2023-11-30 20:50:12 25 4
gpt4 key购买 nike

请解释以下程序的输出,为什么数组一直打印到第 10 个数组索引,如果我不以空字符终止字符串,它总是打印数组的大小,然后循环终止,这意味着现在找到空字符。每次我发现最后的大小相同的结果时,我都会检查不同大小的数组,然后

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
char name[10];

for(i=0;i<10;i++)
{
name[i]='A';
}
for(i=0;name[i]!='\0';i++)
{
printf("%d %d\n",i,name[i]);
}
}

OUTPUT is
0 65
1 65
2 65
3 65
4 65
5 65
6 65
7 65
8 65
9 65
10 10

最佳答案

数组访问越界是未定义的行为。您访问的数组索引超出范围。你已经获得了未定义的行为。

程序可能会崩溃、停止或完美地运行到某个随机索引,或者可能只是在索引 9 处停止。无法保证会发生什么。建议您不要在代码中引入未定义的行为。不要这样做。 C 不提供数组索引越界检查。这种情况你必须小心。

你不能称它为字符串 - 它是一个字符数组。不是字符串。除非它以 \0 结尾,否则我们不能说它是字符串。

关于c - C 中的字符串不以空字符结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49157070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com