我不知道';无法在c中复制字符串

我不知道';无法在c中复制字符串,c,string,copy,C,String,Copy,我无法在函数中复制字符串。一旦我尝试打印字符串,就不会显示任何内容 int read_exit_tr (){ char * buff = (char *) malloc (20 * sizeof(char)); //char * temp; int r = read(0,buff,SIZE_LECTURE); //temp = (char *) malloc (strlen(buff) + 1 ); //memcpy(buff,temp,20); if (r > 0) { pri

我无法在函数中复制字符串。一旦我尝试打印字符串,就不会显示任何内容

int read_exit_tr (){
 char * buff = (char *) malloc (20 * sizeof(char));
 //char * temp;
 int r = read(0,buff,SIZE_LECTURE);
//temp = (char *) malloc (strlen(buff) + 1 );
//memcpy(buff,temp,20);
if (r > 0) {
  printf("%s X\n",buff);
//printf("%s X\n",temp);
}else
  printf("erreur");

 free(buff);
// free(temp);
 return 0;

}
在此版本中,buff打印正确。但一旦我取消注释行和print buff和temp,它们都是空的。
谢谢阅读,你能帮我吗?

因为你没有在
temp
中放任何东西。您可以从
temp
复制到
buff
,但应该是另一种方式。
read()
不添加空终止符,您不能使用类似
strlen()
的函数。@Yasten您的
memcpy
是相反的方向。而不是
malloc(20*sizeof(char))
使用
calloc(21,sizeof(char))
,这会将内存初始化为0,因此字符串将以NUL结尾。21是为NUL终端腾出空间的,为什么不使用
malloc(大小讲座)