c - 从另一个数组设置数组大小时遇到​​问题

标签 c arrays pointers dynamic-memory-allocation

我必须数组(字符串),我希望第二个填充一个特殊字符(即'*'),具体取决于第一个的大小。 例如,如果第一个是“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/

相关文章:

c - 我是否正确地形成了这个多维数组?

c++ - 使用 CMake 链接到 Windows 上的静态库时出现问题

java - BigInteger.toByteArray() 在 java 中返回奇怪的值

java数组索引越界

c++ - 无法访问 IplImage 数据

c++ - C/C++ 程序是否可以通过读取数组末尾 (UNIX) 来产生段错误?

c - &errno 是合法的 C 语言吗?

c - 当您在 C 语言中声明参数数量错误的回调时会发生什么?

android - 为什么在尝试获取 jsonArray 的项目时出现 java.lang.IndexOutOfBoundsException?

c++ - 两种数组声明方法c++的区别