我在调用控制台应用程序中有以下代码。代码是用C语言编写的

char list[500000];
int ret=0;
ret = GetFeatures(".", list);

在方法GetFeatures的dll实现中(char*PATH,char featureList[500000])。
在下面的代码段中,方法在写入大约69个字符后抛出一个错误(访问冲突)。有人知道为什么吗?
while (pos=0)
{
    strcat(featureList, getFeatureName());
    strcat(featureList, "|");
    strcat(featureList, getVersion);
    strcat(featureList, "|");
    strcat(featureList, getVS());
    strcat(featureList, ";");

    pos = isEnd();
}

[从评论更新:]
pos=0是个打字错误。

最佳答案

有几件事:
首先,您还没有在list中初始化内存。它可以包含任何内容,因此任何试图与strcat一起使用它的尝试都是危险的,并且可能会发生不可预测的崩溃。
声明数组时,请执行以下操作:

char list[500000] = "";

其次,你的循环应该是:
while (pos==0)

否则将重置为0。所以while循环中的代码永远不会求值。

09-07 02:39