intelliSense:表达式必须是可修改的左值?

时间:2014-12-07 19:44:27

标签: c++

有谁能告诉我为什么我用Visual C ++会出现这个错误?断点是这些线。

BREAK POINTS PathToTR PathToTR是:

static char pathToTR[] = "J:\\games\\Tabula Rasa\\Tabula Rasa 1.16.5.0";

代码粘贴在ERROR(s)

之下
    {
    case 2:
        pathToTR = (char*)malloc(strlen("."));
        strcpy(pathToTR, ".");

        nameOfMap = (char*)malloc(strlen(argv[1]));
        strcpy(nameOfMap, argv[1]);
    break;
    case 3:
        pathToTR = (char*)malloc(strlen(argv[1]));
        strcpy(pathToTR, argv[1]);

        nameOfMap = (char*)malloc(strlen(argv[2]));
        strcpy(nameOfMap, argv[2]);
    break;
    case 4:
        pathToTR = (char*)malloc(strlen(argv[1]));
        strcpy(pathToTR, argv[1]);

        nameOfMap = (char*)malloc(strlen(argv[2]));
        strcpy(nameOfMap, argv[2]);

        generateNewNavMesh = strcmp(argv[3], "false");
    break;
    default:
        printf("usage:\r\n\t%s <map name>\r\n\t%s <client folder> <map name>\r\n", argv[0], argv[0]);
        return 0;
}

1 个答案:

答案 0 :(得分:0)

您没有显示pathToTR的定义,但我怀疑您将其定义为字符数组。你必须将它定义为指针。

编辑:因为我怀疑pathToTR确实被定义为一个数组。在这种情况下这样的陈述

pathToTR = (char*)malloc(strlen("."));

没有任何意义。

在此数组中保留更多可以附加更多数据的字符,或者每次动态分配足够大的数组并使用新的附加数据复制pathToTR。