c - 我应该在c中手动分配以字符 '\0'结尾的字符串吗?

标签 c

我是 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/

相关文章:

c - 如何将指针传递给C中的函数

c - 代码中出现奇怪的段错误

c - 如何在 C 中编写辅助函数以返回特定范围内的随机数并避免段错误?

c - 当以 0 超时调用时,poll() ingores 传入数据

C 指针的大小和所指向的值不匹配

c - 求余运算符在 C 语言中的工作原理

C 增量运算符

c - block 和循环之间到底有什么区别?

c - Atmelstudio UC3C AVR32 - 框架对象在内存中的错误位置?

c - 在查找代码错误时需要帮助,这些错误是什么以及输出将是什么?