【发布时间】:2019-07-24 13:25:29
【问题描述】:
我必须使用数组(字符串),并且我希望第二个用特殊字符(即“*”)填充,具体取决于第一个的大小。 例如,如果第一个是“TEST” 第二个应该是“****”
所以我有这个代码:
int i;
char arr_1[ ] = "TEST";
char *arr_2 = NULL;
arr_2 = malloc( strlen(arr_1) * sizeof(arr_1) );
if(arr_2 == NULL)
{
printf("\nCouldn't allocate memory !");
exit(0);
}
for(i = 0; i < strlen (arr_1); i++)
{
arr_2[ i ] = '*';
}
printf("The new string is : %s ", arr_2);
free(arr_2);
问题是这实际上不起作用,当我运行它时,我得到“****■@!” (最后是星星和一些奇怪的字符)。
需要帮助,谢谢
【问题讨论】:
-
sizeof(arr_1)等于5,因此您为arr_2分配4 * 5字节。 而且你必须记住,C 中的char字符串实际上称为null-terminated 字节字符串。您不会终止arr_2中的字符串。 -
无法重现错误。见here。
标签: c arrays pointers dynamic-memory-allocation