C语言忘记为\ 0分配一个额外的字节
示例
将字符串复制到malloced缓冲区时,请始终记住将加上1strlen。
char *dest = malloc(strlen(src)); /* WRONG */ char *dest = malloc(strlen(src) + 1); /* RIGHT */ strcpy(dest, src);
这是因为长度strlen不包含尾随\0。如果采用WRONG(如上所示)方法,则在调用时strcpy,程序将调用未定义的行为。
它也适用于从stdin其他来源读取最大长度已知的字符串的情况。例如
#define MAX_INPUT_LEN 42
char buffer[MAX_INPUT_LEN]; /* WRONG */
char buffer[MAX_INPUT_LEN + 1]; /* RIGHT */
scanf("%42s", buffer); /* Ensure that the buffer is not overflowed */
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短