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 */
热门推荐
7 简短的二胎祝福语
10 简短霸气女儿生日 祝福语
11 祝福语高考小众诗句简短
12 元旦祝福语20秒简短
13 老师过年祝福语大全 简短
14 一生祝福语简短
15 产检祝福语简短霸气
16 朋友店开张祝福语简短
17 生日爱情祝福语大全简短
18 朋友女儿生日祝福语 简短