CString str[100];
CStdioFile fs;
fs.Open(SourPath, CFile::modeRead | CFile::typeText)
for(int b=1;b++;b<100)
{
if(fs.ReadString(str1)==NULL) break;
s[b]=str1;
b++;
//AfxMessageBox();
}
fs.Close();
for(int i=0;i++;i<100)
{
while(s[i][n]!='\n') 对数组中的一个字符串进行处理。
{
switch(s[i][n])
{
}
n++;
}
}
为什么会有错误。大家帮忙看看吧,谢谢。
CStdioFile fs;
fs.Open(SourPath, CFile::modeRead | CFile::typeText)
for(int b=1;b++;b<100)
{
if(fs.ReadString(str1)==NULL) break;
s[b]=str1;
b++;
//AfxMessageBox();
}
fs.Close();
for(int i=0;i++;i<100)
{
while(s[i][n]!='\n') 对数组中的一个字符串进行处理。
{
switch(s[i][n])
{
}
n++;
}
}
为什么会有错误。大家帮忙看看吧,谢谢。
解决方案 »
- 键盘过滤驱动动态卸载,不使用计数
- windows 程序设计 关于 窗口过程的一个问题
- 高分!!想在对话框中用鼠标实现任意拖动控件的功能!!
- 请问什么原因?
- 问,如何即打开界面又完成界面的赋值呢?
- 我弹出一个非模态的对话框,如何能让这个对话框有自己的图标,而且在出现在屏幕下方的程序栏内
- 如何通过程序改变机器网卡的IP地址、子网掩码和网关?
- 使用AnimateWindow的问题
- 如何判断一个字符串是一个正确的数字
- 如何将CString类型的变量转成为Float类型的变量!!!!!!!!!!!!
- 关于响应CEDIT控件报错问题?
- 编辑框数据超出范围时如何让UpdateData(TRUE)不要更新数据?
你的s二维数组不会是越界了吧?
{
if(fs.ReadString(str1)==NULL)
break;
s[b]=str1;
b++;//你确定这个b++是需要的?
}
for(int b=1;b++;b<100)下面处理的怎么有100行了
for(int i=0;i++;i<100)
while(s[i][n]不错才怪.
n的初值是零,
我又查了一遍,没有越界。
是不是CString s数组不能这样定义啊。
大家帮我看看,谢谢了。
{
switch(s[i][n])
{
}
n++;
}
-----------------------------
我在想,它怎么能='\n'呢,不等于的话,为什么不越界呢
s[5][n]肯定报错啦
我觉得covsno说的有道理。我的文本文件行数不固定,不过一般不超过100行。
又不会用动态数组,所以这样设的,有好的方法吗
To
for(int b=1; b<100; b++)
littleC中的:///
int load_program(char*p,char *fname)
{
FILE *fp;
int i=0; if((fp=fopen(fname,"rb"))==NULL) return 0; i=0;
do
{
*p=getc(fp);
p++;i++;
}while (!feof(fp) && i<PROG_SIZE); if(*(p-2)==0x1A) *(p-2)=0;// sz
else *(p-1)=0;
fclose(fp);
return 1;
}PROG_SIZE=10000
我用的是用
int n;
n=0;
CStdioFile str;
CArray<CString,CString> FileArray
while(fs.ReadString(str))
{
str+='\n'
FileArray.Add(str);
}
现在把数据都存到了FileArray中。
要是正常读取就是
for(int i=0;i<FileArray.GetSize();i++)
{
while(FileArray[i][n])
{
switch() //判断一个字符串中的单个字符
}
}
要是想执行跳转的话怎么实现啊。比说说我要跳转到第三行重新开始执行,怎么做。请高手指点。
void exec_for(void)
{
int cond;
char *temp,*temp2; get_token();
eval_exp(&cond);// init exp
if(*token != ';') sntx_err(SEMI_EXPECTED);
prog++;// get past the ;
temp=prog;// condition
for(;;)// forever
{
eval_exp(&cond);// check condition
if(*token != ';' ) sntx_err(SEMI_EXPECTED);
prog++;//"ch=ch+1) {"
temp2=prog;// increament
//find the start of the for block
// if we put comments after 'for'
// such as for() /* */
while(token[0]!='{') get_token();
// '{' comes
putback();
if(cond)
{
interp_block();// true
}
else
{// skip around loop
find_eob();
return;
}
prog=temp2;
eval_exp(&cond);//do the increment
prog=temp;// loop back to top
}
} 他用的是递归,所以不需要堆栈。注意char *temp,*temp2;
这2个变量在递归时的的作用,他们都指向源程序的某处temp指向condition(如 j<5)而temp2指向increament(即++j)
"STEP-NC程序解释器的研究与开发"
http://www.lw23.com/pdf_6335cfdc-7c2e-46bb-a001-198f7e9306fb/lunwen.pdf