大家帮我捉捉虫。在线等待中…………
以下这个程序是一个去掉字符串中多余空格和回车以及注释的程序,用C语言编写。
我用TC2.0编译能通过,而且在这个环境下执行正常。
但是我用DEV C++ 来编译这个程序时,编译能通过,却不能执行。
我用的操作系统是XP,用DOS模式运行时提示“遇到问题需要关闭”。
大家帮我找找原因看。谢谢!
#include <stdio.h>
int main()
{
char *p="\n prog\nram\n #";
char buffer[4096];
int i=0;
void pre(char *p,char *buffer,char ch);
pre(p,buffer,'#');
while(buffer[i]!='#'){
printf("%c",buffer[i]);
i++;
}
}
void pre(char *p,char buffer[],char ch)
{
int flag=1,end=0;/*flag=1表示光标还未遇到首个文字。*/
char *q;
/*处理掉换行符('\n')。*/
q=p;
while(*q!=ch){
if(*q=='\n')*q=' ';
q++;
}
while(*p!=ch){
if(flag){
if(*p==' ')p++;
else {flag=0;*buffer++=*p++;}
}
else{
if(*p==' '){
if(*(p+1)==' ')p++;
else if(*(p+1)==ch){
*buffer=ch;
end=1;}
else *buffer++=*p++;
}
else if((*p=='\\')&&(*(p+1)=='*')){
p=p+2;
while(*p!='*'&&*(p+1)=='\\'){
if(*p==ch) return;
else p++;
}
p=p+2;
}
else *buffer++=*p++;
}
}
if(end);
else *buffer=ch;
}