【C语言核心】C风格字符串深度解析与安全编程实践
一、字符串存储原理与内存布局
1. 终止符验证实验
char valid_str[6] = {
'H','e','l','l','o','\0'};
char invalid_str[5] = {
'H','e','l','l','o'};
printf("合法字符串长度:%zu\n", strlen(valid_str));
printf("非法字符串长度:%zu\n", strlen(invalid_str));
2. 常见初始化陷阱
char str1[5] = "Hello";
char *str2 = "Hello";
str2[0] = 'h';
char str3[] = "Hello";
char str4[10] = "Hello";
二、危险函数与安全替代方案
1. 传统函数问题分析
char buf[5];
strcpy(buf, "HelloWorld");
char path[8] = "/usr";
strcat(path, "/lib");
char passwd[10] = "secret";
if(strcmp(passwd, input) == 0) {