c++的问题-c++编译通过,运行时弹出窗口说“该内存不能为written”代码如下

问题描述

c++编译通过,运行时弹出窗口说“该内存不能为written”代码如下

//对一串字符串进行分类。
#include
#include
using namespace std;
#define N 256

void getsym(char STR[N],string SYM,string *ID,int *NUM){
char *s;
for(int i=0;i<N;i++) //去空格
{
if(STR[i]!=' ')
{
*s=STR[i];
s++;
}
}
for(i=0;*s!=NULL;i++) //保留字,符号,数字,标识符的识别
{
//识别保留字:var、、const、、begin、end、、while、、do、、read、、write、if、、then、、procedure、、call、、
if((*s=='v')&&(
(s+1)=='a')&&(*(s+2)=='r'))
{
SYM++="var";
cout<<"VARSYM:var"<<endl;
s=s-3;
}
else if((*s=='c')&&(
(s+1)=='o')&&(*(s+2)=='n')&&(*(s+3)=='s')&&(*(s+4)='t'))
{
*SYM++="const";
cout<<"CONSTSYM:const"<<endl;
s=s-5;
}

    else if((*s=='b')&&(*(s+1)=='e')&&(*(s+2)=='g')&&(*(s+3)=='i')&&(*(s+4)='n'))
    {
        *SYM++="begin";
        cout<<"BEGINSYM:begin"<<endl;
        s=s-5;
    }

    else if((*s=='e')&&(*(s+1)=='n')&&(*(s+2)=='d'))
    {
        *SYM++="end";
        cout<<"ENDSYM:end"<<endl;
        s=s-3;
    }

    else if((*s=='w')&&(*(s+1)=='h')&&(*(s+2)=='i')&&(*(s+3)=='l')&&(*(s+4)='e'))
    {
        *SYM++="while";
        cout<<"WHILESYM:while"<<endl;
        s=s-5;

    }
    else if((*s=='d')&&(*(s+1)=='o'))
    {
        *SYM++="do";
        cout<<"DOSYM:do"<<endl;
        s=s-2;
    }

    else if((*s=='r')&&(*(s+1)=='e')&&(*(s+2)=='a')&&(*(s+3)=='d'))
    {
        *SYM++="read";
        cout<<"READSYM:read"<<endl;
        s=s-5;
    }

    else if((*s=='w')&&(*(s+1)=='r')&&(*(s+2)=='i')&&(*(s+3)=='t')&&(*(s+4)='e'))
    {
        *SYM++="write";
        cout<<"WRITESYM:write"<<endl;
        s=s-5;
    }

    else if((*s=='i')&&(*(s+1)=='f'))
    {
        *SYM++="if";
        cout<<"IFSYM:if"<<endl;
        s=s-2;
    }
    else if((*s=='t')&&(*(s+1)=='h')&&(*(s+2)=='e')&&(*(s+3)=='n'))
    {
        *SYM++="then";
        cout<<"THENSYM:then"<<endl;
        s=s-4;
    }
    else if((*s=='p')&&(*(s+1)=='r')&&(*(s+2)=='o')&&(*(s+3)=='c')&&(*(s+4)='e')&&(*(s+5)='d')&&(*(s+6)='u')&&(*(s+7)='r')&&(*(s+8)='e'))
    {
        *SYM++="procedure";
        cout<<"PROCEDURESYM:procedure"<<endl;
        s=s-9;
    }
    else if((*s=='c')&&(*(s+1)=='a')&&(*(s+2)=='l')&&(*(s+3)='l'))
    {
        *SYM++="call";
        cout<<"CALLSYM:call"<<endl;
        s=s-4;
    }
    //识别符号
    else if((*s==',')||(*s==';')||(*s==':')||(*s=='=')||(*s=='>')||(*s=='<')||(*s=='!')||(*s=='(')||(*s==')')||(*s=='.'))
    {
        cout<<"symbol:"<<*s<<endl;
        s=s-1;
    }
    //识别数字
    else if((*s<58)&&(*s>48))
    {
        *NUM++=*s;
        cout<<"number:"<<*s<<endl;
        s=s-1;
    }
    //识别标识符
    else
    {
        cout<<*s;
        s=s-1;
    }
}

}

int main()
{
char str[N];
string *sym=0,*id=0;
int *num=0;
cout<<"please input the code:n";
for(int i=0;i
{
cin>>str[i];
if(str[i]=='.')
break;
}
getsym(str,sym,id,num);
return 0;
}

解决方案

请先在Debug模式下打开call stack,看看函数调用堆栈,先找到出错的函数调用。

时间: 2024-11-02 05:48:02

c++的问题-c++编译通过,运行时弹出窗口说“该内存不能为written”代码如下的相关文章

fckeditor粘贴Word时弹出窗口取消的方法_javascript技巧

本文实例讲述了fckeditor粘贴Word时弹出窗口取消的方法.分享给大家供大家参考.具体方法如下: 用fckeditor作为用户发布的编辑框,允许用户发布Word.默认的情况下,粘取进word时,提示是否清除word样式,选择"是"则弹出一个框,需要再粘贴一次来清除word样式.这个操作很麻烦,因此要取消. 开始找到的方法是把ckeditor/" target="_blank">fckeditoreditorjs下的fckeditorcode_i

fck编辑器粘贴Word时弹出窗口怎么取消

开始找到的方法是把ckeditor/" target="_blank">fckeditoreditorjs下的fckeditorcode_ie.js,查找PasteFromWord会找到以下内容:  代码如下 复制代码 PasteFromWord:function(){FCKDialog.OpenDialog('FCKDialog_Paste',FCKLang.PasteFromWord,'dialog/fck_paste.html',400,330,'Word');}

程序编译后运行时的内存分配

太好的文章了,看到不得不转,转自:http://blog.sina.com.cn/s/blog_5420e0000101a0w1.html 一.编译时与运行时的内存情况 1.编译时不分配内存编译时是不分配内存的.此时只是根据声明时的类型进行占位,到以后程序执行时分配内存才会正确.所以声明是给编译器看的,聪明的编译器能根据声明帮你识别错误. 2.运行时必分配内存运行时程序是必须调到"内存"的.因为CPU(其中有多个寄存器)只与内存打交道的.程序在进入实际内存之前要首先分配物理内存. 3.

c语言-用VS6编写C语言,编译时弹出这个文件不存在是怎么回事?怎样解决?

问题描述 用VS6编写C语言,编译时弹出这个文件不存在是怎么回事?怎样解决? 用VS6编写C语言,编译时弹出这个文件不存在是怎么回事?怎样解决? 解决方案 安装完整版本的VC++ 6.0,新建一个项目,把你原来的项目的代码复制粘贴到新的项目,再编译. 原版的VC++下载:http://download.csdn.net/album/detail/639 (我亲自上传,并且不要任何积分)

java-JavaCompiler中run方法运行时抛出NullPointerException异常

问题描述 JavaCompiler中run方法运行时抛出NullPointerException异常 解决方案 解决方案二: 解决方案三: 参考:http://blog.csdn.net/liu578182160/article/details/25103905

Java实现软件运行时启动信息窗口的方法_java

本文实例形式详述了Java实现一个程序运行时的启动窗口效果,如常用的Microsoft Word. Borland JBuilder 等,这样的窗口称为信息窗口.使用信息窗口的好处是可以使用户在等待软件主界面出现前的一段时间中得知软件运行状态.本例将演示如何来实现信息窗口,当打开程序时,信息窗口先显示,并在窗口上倒计时,直到"waiting 0"时,关闭该窗口,显示程序的主窗口. 该功能的主要实现方法如下: 一般来说,大多数的信息窗口是没有标题栏的,因此信息窗口不能由继承JFrame

vs2013写c++调试时 弹出无法启动程序(直至今天才有这样的情况,在此之前使用是没问题的)求解

问题描述 vs2013写c++调试时 弹出无法启动程序(直至今天才有这样的情况,在此之前使用是没问题的)求解 解决方案 这个问题我用2015的时候也有,你之前一定调试过,打开任务管理器将之前调试的关闭就好了. 解决方案二: 应该要把debug文件夹里的那个.exe文件删掉,再重新调试.或者把debug文件夹删了,再调试一次. 解决方案三: 删掉整个项目,然后重建重写,我就是这样弄的 解决方案四: 新建一个控制台程序.编译,看能不能运行. 保持程序中的include stdafx,并且不要修改_t

win7通过cmd命令禁止文件启动时弹出警告窗口的方法

  现在电脑中都会安装很多的杀毒软件,对自己的电脑进行保护,以防一些文件对电脑进行恶性的破坏,这对于系统来说是件好事,可以有效保护我们的电脑,但是每一次打开一个未知文件的时候,都会弹出安全警告提示窗口,很多情况下该文件对于电脑并没有任何的威胁,每次都会跳出各种提示,让用户看的很心烦.那么怎么才能让安全警告提示窗口不再弹出呢?下面小编就以win7系统为例,教大家Win7如何使用命令禁止文件启动时弹出警告窗口. win7通过禁止文件启动时弹出警告窗口的方法 1.使用组合快捷键win键+r键打开运行窗

win7安装QQ时弹出提示“应用程序无法启动因为并行配置不正确”如何解决

  刚刚安装完windows7操作系统后需要安装一些常用的程序软件,比如QQ.office等等.有用户反应在Win7系统中安装QQ的时候弹出提示"应用程序无法启动因为并行配置不正确"导致无法正常安装,该如何解决?出现这样的情况,首先我们确保系统服务是否运行正常,系统中的运行库是否已安装.本教程以win7纯净版系统为例,给大家演示具体解决方法. 步骤:运行库 1.下载"Microsoft Visual C++"运行库; 2.将运行库进行安装; 具体步骤: 1.按下&q