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

Ale*_*der 12 c string char

尝试复制char *strchar c[]但却出现分段错误或初始化程序错误无效.

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

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

pmg*_*pmg 20

使用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;
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么这段代码给我一个**段错误**?char c [80]; strcpy(c,token); strncpy(c,token,sizeof c - 1); c [79] ='\ 0'; char*broken = strtok(c,"#"); (2认同)
  • strncpy非常低效,最重要的是,如果目标缓冲区小于源,则不会终止.请不要使用它. (2认同)