【发布时间】:2022-11-13 16:19:31
【问题描述】:
#include<stdio.h>
int main()
{
char main[]="Structured Programming";
char copy[30];
for (int i = 0; main[i] !='\0' ; i++)
{
copy[i]=main[i];
}
printf("%s",copy);
}
在上面的问题中,这应该打印Structured Programming,但我得到Structured Programming a,这发生在所有ide上,但不是在线编译器,在线编译器工作正常,谁能告诉我原因?
【问题讨论】:
-
该代码具有未定义的行为,因为您将一个数组传递给
printf,该数组不是以 nul 结尾的。如果您使用char copy[30] = { 0 };初始化数组,那么它将以 nul 结尾,并且是预期的 C 字符串。 -
当我在我的机器上编译和运行时它工作正常。
-
所以可能。在“工作”阵列的平台上发生了在正确的位置有一个
0来终止字符串。但是局部变量是未初始化的:你必须明确地这样做。
标签: c compiler-errors