我想在二维数组上decalre,但我想在声明中放入一个vrailbe
#define MAX_SIZE 512
char* FWdir;
int main()
{
getFwDIR(FWdir); //--> put In FWdir path example: /opt/fw1
char arr [][MAX_SIZE] = {
FWdir,"-t","arg"
};
}
我尝试在arr上迭代,但没有得到/opt/fw 1,而是得到了一个地址
我暴露了
如果我刊登逮捕令我会得到
/opt/fw 1-t参数...欧洲工商管理学院我得到了“一些输出”-t参数
1条答案
按热度按时间uyhoqukh1#
这里有两个问题。
第一种情况是,你将指针
FWdir
传递给getFwDIR()
,但是FWdir
为NULL,所以getFwDIR()
没有地方存储路径,在getFwDIR(char *)
的当前公式中,该函数也不能为路径动态分配内存。第二个问题是,您试图将字符串
FWdir
的内容直接写入数组arr
,但这不是字符串在C中的工作方式。关于第一点,你有两个明显的选择:
1.重写
getFwDIR()
以接受指向指针getFwDIR(char **)
的指针,并为该函数中的路径动态分配空间:但是,这确实留下了稍后释放内存的问题。
1.将
FWdir
设为定长字符串,并传递给getFwDIR()
:由于您已经在
arr
中有效地将路径长度限制为511个字符,所以我会选择第二个选项,它更容易也更安全。关于第二点,你还有两个明确的选择:
1.首先声明2d数组,并将第一个元素传递给
getFwDIR()
:在这个示例中,您不需要
FWdir
。1.初始化 * 后 * 将
FWdir
复制到数组中: