我正在尝试使用变量并在函数使用它之后将其擦除。 Basicacly我是strint str1 + str2,在函数中使用它然后释放内存。 我以为我得到了一切困难,但我的代码给我发出了警告和错误:
以上是上述代码:
// Step 1
char* commande = (char*) malloc(len1 + len2 + 1);
strcpy(commande, str1);
strcat(commande, str2);
function(commande);
free(commande);
// Step 2
char* commande = (char*) malloc(len3 + len4 + 1);
strcpy(commande, str3);
strcat(commande, str4);
function(commande);
free(commande);
我做错了什么?
编辑:我更正了len2中的拼写错误。
答案 0 :(得分:1)
诸如
之类的陈述char* commande = (char*) malloc(len3 + len4 + 1);
是变量声明。它说编译器:我希望commande成为一个字符的指针。您只能在函数中声明变量一次,因为重新声明变量没有任何意义。
关于不兼容的隐式定义的错误来自于您没有告诉编译器malloc
具有什么类型的事实。为此,您必须包含一个包含所有必要声明的头文件。将以下行放在文件顶部:
#include <stdlib.h>
答案 1 :(得分:0)
确保你已经包含在内,并且不需要在第2行之后声明指针命令。