c - 如何在 C 中将 char *string 复制到 char c[]?

标签 c string char

尝试将 char *str 复制到 char c[] 但出现段错误或无效初始化错误。

为什么这段代码给我一个段错误

char *token = "some random string";
char c[80];  
strcpy( c, token);
strncpy(c, token, sizeof c - 1); 
c[79] = '\0';
char *broken = strtok(c, "#");

最佳答案

使用strncpy()而不是 strcpy()

/* code not tested */
#include <string.h>

int main(void) {
  char *src = "gkjsdh fkdshfkjsdhfksdjghf ewi7tr weigrfdhf gsdjfsd jfgsdjf gsdjfgwe";
  char dst[10]; /* not enough for all of src */

  strcpy(dst, src); /* BANG!!! */
  strncpy(dst, src, sizeof dst - 1); /* OK ... but `dst` needs to be NUL terminated */
      dst[9] = '\0';
  return 0;
}

关于c - 如何在 C 中将 char *string 复制到 char c[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508838/

相关文章:

c - 在 dev C++ 中使用 libcurl 几乎解决了我的问题,这是最后一个障碍。 (缺少 libcurl.dll)

regex - 用 1 个以上的单词拆分字符

c++ - 使用 std::string 构造函数复制 const char *

检查c中的多输入字符

c - 我正在尝试使用 cygwin gcc 编译我的 c 程序,但当我尝试这样做时出现错误

c - 如何将单词插入简单的哈希函数 C

java - String.replace() 无法正常工作?我究竟做错了什么?

c++ - 初学者 C++ 问题

Java For 循环如果值更大则重复

c - 二维数组和 C