明明存在了缓冲区溢出,却能正常运行不报错,并且输出结果也是完整的
# include <stdio.h> # include <string.h> char name[] = "abcdefghijklmnopqrstuvwxyz"; int main() { char buffer[8]; strcpy(buffer,name) ; return 0; }
收起
要想出现报错警告的话,请使用对应的安全函数:
strcpy_s(buffer,name);
如果是防止溢出,使用:
strncpy(buffer,name,sizeof(buffer)-1); //或 strncpy_s(buffer,name,sizeof(buffer)-1)
注意,减1是预留给字符串的结尾符合 \0 ,不预留会有问题的(这是常识)。如果对您有用,望采纳。
报告相同问题?