如何摆脱动态分配的char*的垃圾值

How to get rid of Garbage value of char* dynamically allocated

提问人:Hayato 提问时间:11/11/2021 更新时间:11/11/2021 访问量:160

问:

我正在尝试弄清楚如何在动态分配的 char* str 中没有垃圾值。

 char* str = (char*)malloc(10*sizeof(char));

因为我想用这个char*来连接字符串,所以我想知道如何没有垃圾值,如下所示,

printf("str looks like this %s\n",str);

则输出为

譁�蟄怜

此外,当我使用 Ubuntu 时会发生这种情况,但 mac 不会发生这种情况。 如何确保它没有垃圾值,以便以后可以很好地连接?

数组 c 字符串 char malloc

评论

0赞 tstanisl 11/11/2021
考虑 calloc

答:

0赞 2 revs, 2 users 95%chux - Reinstate Monica #1

...如何不具有垃圾价值...
如何确保它没有垃圾值,以便以后可以很好地连接?

用于将分配的内存填零。calloc()

char* str = calloc(10, sizeof *str);
if (str) {
  printf("str looks like this <%s>\n",str);
}
0赞 0___________ 11/11/2021 #2

最昂贵的方法是使用函数。calloc

char* str = calloc(10, sizeof(*str));

最快的方法:

char* str = malloc(10 * sizeof(*str));
*str = 0;