我必须数组(字符串),我希望第二个填充一个特殊字符(即'*'),具体取决于第一个的大小。 例如,如果第一个是“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);
问题是这实际上不起作用,当我运行它时,我得到“****■@!” (最后是星星和一些奇怪的字符)。
需要帮助,谢谢
最佳答案
您分配的内存超出了要求。既然内存没有初始化,那么后面就是垃圾了。
用途:
malloc(sizeof(arr_1)/sizeof(arr_1[0]));
关于c - 从另一个数组设置数组大小时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54962808/