【发布时间】:2020-08-13 05:11:32
【问题描述】:
char buff[10]={0};
char buff1[6]="xxxxx";
sprintf(buff,"My name is %s");
这是 buff(即 10)的正确数组初始化吗?或者我需要用 17 进行初始化。
【问题讨论】:
-
初始化没问题,但是对
sprintf()的调用是致命的——你没有提供一个由%s格式化的值,所以你有未定义的行为,任何事情都可能发生。buff的数组大小可能太小,但代码与此分开。 -
您绝对应该turn up your compiler's warning level,直到它为您提供有关
sprintf电话的信息。不匹配的格式字符串不应该在这个时代得到解决,但编译器比这更进一步。 -
AADHI A.R,最好选择一种语言:这里是 C 或 C++。