注册 登录
编程论坛 数据结构与算法

注释程序最后那出问题了?

努力C语言 发布于 2013-07-18 15:38, 658 次点击
#include"stdio.h"
void progress(char* str){
char *beg,*tmp,rt=0;
while(*str)//rt表示是否注释
{
if(*str=='\"')
{
while(*++str!='\"')
if(*str=='\\')str++;
str++;
}
else if(rt==0 && *str=='/')
{
beg=str++;
if(*str=='*' || *str=='/')
rt=(*str=='*')+1;
}
else if( (rt==1 && *str=='\n') || (rt==2 && (*str=='*' && *++str=='/')) )
{
tmp=beg;str++;
while(*beg++=*str++);
str=tmp;rt=0;
}
else
str++;
}
}
int main(){
char str[]="//============\n //simplest program\n//==============\n#include<iostream>\nusing namespace std;\n//----------------\nint main(){\ncount<<\"hello world!\n\";\n}//--------";
printf(str);
printf("\n***********************\n");
progress(str);
printf("\n***********************\n");
printf(str);
getchar();
return 0;
}
中显示结果最后面//---------去不掉这么回事?
4 回复
#2
yuccn2013-07-19 08:12
你调试一下?自己写的算法自己最明白了
#3
岁月如刀2013-07-21 23:32
楼主, 你这代码写的。。

哥们看着真费劲。。。

不过,还是帮你打个补丁先。

程序代码:

#include"stdio.h"

void progress(char*str)
{
    char*beg,*tmp,rt=0 ;
    int sign = 0;
   
    //rt±íê¾êÇ·ñ×¢êí
    while(*str || sign)
    {
        if(*str=='\"')
        {
            while(*++str!='\"')
            if(*str=='\\')str++;
            str++;
        }
        else if(rt==0&&*str=='/')
        {
            beg=str++;
            if(*str=='*'||*str=='/')
            rt=(*str=='*')+1 ;
        }
        else if(rt==1 && *str=='\n'
                    ||(rt==2 && (*str=='*'&&*++str=='/'))
                    || sign == 1)
        {
            tmp=beg ;
            if(*str == '\0') {
                *beg = '\0';
            }
            else {
                str++;
                while(*beg++=*str++);
            }
            
            str=tmp ;
            rt=0 ;
            sign = 0;
        }
        else {
            if(rt == 1 && *(str + 1) == '\0') {
                sign = 1;
            }
            str++;
        }
    }
}

int main()
{
    char str[]="//============\n //simplest program\n//==============\n#include<iostream>\nusing namespace std;\n//----------------\nint main(){\ncount<<\"hello world!\n\";\n}//--------" ;
    char test[] = "//1234123";
   
   
    printf(str);
    printf("\n***********************\n");
    progress(str);
    printf("\n***********************\n");
    printf(str);
   
    getchar();
    return 0 ;
}
#4
岁月如刀2013-07-21 23:35
给你个小工具格式化你的代码

http://www.
#5
holy__shit2013-08-26 19:54
回复 楼主 努力C语言
想想双引号的作用!
1