大家帮我捉捉虫。在线等待中…………

fastzch 2003-10-18 07:05:56
以下这个程序是一个去掉字符串中多余空格和回车以及注释的程序,用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;
}
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon520 2003-10-18
  • 打赏
  • 举报
回复
楼上的兄弟,
十个帖子九个能看见你
该不会是预谋斑竹的宝座吧?
^_^
Wolf0403 2003-10-18
  • 打赏
  • 举报
回复
if(*p==' '){
if(*(p+1)==' ')p++;
else if(*(p+1)==ch){
*buffer=ch;
end=1;
p++; // 少了这里
}
else *buffer++=*p++;
}
ttlb 2003-10-18
  • 打赏
  • 举报
回复
把第二个while 改为:
while(*p!=ch && end != 1)
ttlb 2003-10-18
  • 打赏
  • 举报
回复
char *p="\n prog\nram\n #";
"\n prog\nram\n #" 的类型实际是 const char *
用的时候要千万小心。

修正方法:
char p[]="\n prog\nram\n #";


69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧