如何从特定索引开始读取字符串?

时间:2015-04-09 11:28:50

标签: c++ mfc

我目前正在制作一个用C ++编写的MFC程序。我想要做的是,我想创建一个函数来读取特定索引中的字符串。这是我正在处理的代码:

void CMFCApplication1Dlg::formatting(int start, int end, char *content, BinTreeNode *node){
    char *temp1 = "", *temp2 = "", *temp3 = "";
    int var1, var2;

    sscanf(&(content[start]), "%s %s %s", temp1, temp2, temp3);
    if (strcmp(temp1, "minus") == 0 || strcmp(temp1, "if") == 0){
        if (strcmp(temp1, "minus") == 0){
            node->isMinus = TRUE;
            var1 = atoi(temp2);
            var2 = atoi(temp3);
            node->operand1 = var1;
            node->operand2 = var2;
        }
        else if (strcmp(temp1, "if") == 0)
        {
            node->isIf = TRUE;
            var1 = atoi(temp2);
            var2 = atoi(temp3);
            node->operand1 = var1;
            node->operand2 = var2;
        }
    }
    else if (strcmp(temp3, "minus") == 0 || strcmp(temp3, "if") == 0){
        if (strcmp(temp3, "minus") == 0){
            node->isMinus = TRUE;
            var1 = atoi(temp1);
            var2 = atoi(temp2);
            node->operand1 = var1;
            node->operand2 = var2;
        }
        else if (strcmp(temp3, "if") == 0)
        {
            node->isIf = TRUE;
            var1 = atoi(temp1);
            var2 = atoi(temp2);
            node->operand1 = var1;
            node->operand2 = var2;
        }
    }
    else{
        MessageBox(_T("Invalid Format"), _T("Error"), MB_OK);
    }

}

问题在于它会出现一些错误的指针。我不知道为什么代码会出现这种问题并需要一些帮助。请你成为我的救世主?

1 个答案:

答案 0 :(得分:0)

请查看此实施:http://howtowriteaprogram.blogspot.ru/2010/11/lisp-interpreter-in-90-lines-of-c.html

语言翻译有两部分:

  1. 解析:解析组件采用以下形式的输入程序 一系列字符,根据句法进行验证 语言规则,并将程序翻译成内部 表示。在简单的解释器中的内部表示 是一种树结构(通常称为抽象语法树) 密切镜像语句或表达式的嵌套结构 该程序。在一个叫做编译器的语言翻译器中 通常是一系列内部表征,从一个开始 抽象语法树,并进展到一系列指令 可以直接由计算机执行。请参阅提供的实现中的 read() read_from() tokenize()函数。

  2. 执行:然后根据内部表示进行处理 语言的语义规则,从而执行 计算。执行函数称为 eval()