【发布时间】:2021-06-15 05:22:34
【问题描述】:
以下是代码:
#include<stdio.h>
int main(){
char a[6]; // DECLARATION OF ARRAY OF CHARACTER WITH SIZE 6
printf("Enter ur Name :");
scanf("%s",a); // INITILISATION OF ARRAY
printf("\nName : %s\n",a); //PRITNTING WHAT GETS STORED IN A
for (int i = 0; i < 10; ++i)
{
printf("%c .",a[i]); // PRINTNING A WITHIN BOUND 10.
}
return 0;
}
我得到以下输出:
Enter ur Name :DESKTOP
Name : DESKTOP **//Why DESKTOP is being printed ? shouldn't be DESKTO**
D .E .S .K .T .O . . . . .
为什么我得到 DESKTOP .. 因为 a 大小为 6,因此 a 必须存储 DESKTO 。
【问题讨论】:
-
访问越界元素是未定义的行为。 C 会让你这样做,但结果是不确定的——它可能会崩溃,可能会给出错误的值,甚至可能看起来“工作”。
标签: arrays c string format-specifiers