我是 c 语言新手,对以字符“\0”结尾的字符串感到困惑,我应该分配它吗?
比如我想存储一个最大长度为6的字符串;
如果我使用数组,我应该使用 char str[6]
还是 char str[7]
?
char as[3] = "abc";
printf("%s\n", as);
//seems no problem
如果我使用 char 指针,我应该使用 char *str = malloc(6)
还是 char *str = malloc(7)
?
最佳答案
对于预先初始化的数组,不需要在括号中写入数字。你可以直接写
char str[] = "this is my string";
编译器会自动计算所需的字节数。
但是对于 malloc
,您必须添加 1。例如:
char *strdup(const char *str)
{
char *ret = malloc(strlen(str) + 1);
strcpy(ret, str);
return ret;
}
关于c - 我应该在c中手动分配以字符 '\0'结尾的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45910939/