【发布时间】:2014-10-28 12:01:52
【问题描述】:
我有一段代码,它会给我一个字符数组。 我想将此数组提供给需要字符指针的函数。 当我将此数组输入函数时,当我尝试运行程序时会导致分段错误。
这很好用。
char* buffer = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sum> <part>55</part> <part>6</part> <part>*</part></sum>";
long output = calcXML(buffer);
当我尝试创建一个数组时,它会给我一个分段错误
char buffer[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sum> <part>55</part> <part>6</part> <part>*</part></sum>";
long output = calcXML(buffer);
此外,当我尝试从数组中创建一个指针时,也会发生相同的分段错误。
char buffer[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sum> <part>55</part> <part>6</part> <part>*</part></sum>";
char *ptrBuffer = malloc(strlen(buffer) * sizeof(char) + 1);
ptrBuffer = &buffer[0];
long output = calcXML(ptrBuffer);
我该如何解决这个问题?
编辑:
函数calcXML(char *xml) 会将xml 参数传递给函数xmlParseDoc()。这是libxml library的函数
【问题讨论】:
-
XY 问题 - 您的问题不在于传递 var char 数组与 char 指针,而在于
calcXML试图处理该参数。 -
注意:
sizeof(char)被定义为 1。