去除C源代码中的注释(还有问题)
时间:2010-08-27
来源:互联网
本帖最后由 0vk0 于 2010-08-27 10:45 编辑
大虾帮忙看下,去除/* */时有问题
复制代码
大虾帮忙看下,去除/* */时有问题
- void del_comment(char * buffer)
- {
- char *p,*q;
- p = buffer;
- q = buffer + 1 ;
-
- for ( ; *p != '\0' ; )
- {
- if ( *p == '/' && *q == '/' )
- {
- while ( *p++ != '\n' )
- ;
- q = p + 1;
- }
-
- if ( *p == '\"' )
- {
- putchar(*p);
- while ( *p++ != '\"' )
- {
- putchar(*p);
- }
- q = p + 1;
- }
-
- if ( *p == '\'' )
- {
- putchar(*p);
- while ( *p++ != '\'' )
- {
- putchar(*p);
- }
- q = p + 1;
- }
-
- if ( *p == '/' && *q == '*' ) //这里有问题
- {
-
- while ( *p++ != '*' && *q++ != '/' ) //不知道为什么这里只循环一次
- ;
- p++;
- q++;
-
- printf("\n");
- }
-
- putchar(*p);
- p++;
- q++;
-
- }
-
- printf("\n");
- }
作者: 0vk0 发布时间: 2010-08-27
我告诉一个非常简单的方法,clang,clang的接口非常清晰,你可以调用cpp的命令进行预处理。
或者,gcc的libcpp,这个稍微复杂一点。
或者,gcc的libcpp,这个稍微复杂一点。
作者: prolj 发布时间: 2010-08-27
while ( *p++ != '/' && *q++ != '*' ) //不知道为什么这里只循环一次
*p++ 等于 *p;p++; (也不完全一样,*p++是一次完成了*p 和 p++)。你应该是这里没搞清楚
if ( *p == '/' && *q == '*' ) //这里有问题
而这里的*p 就是 '/', 下面当然就执行到*p!='/'就结束了, 然后p++一次。q也一样
*p++ 等于 *p;p++; (也不完全一样,*p++是一次完成了*p 和 p++)。你应该是这里没搞清楚
if ( *p == '/' && *q == '*' ) //这里有问题
而这里的*p 就是 '/', 下面当然就执行到*p!='/'就结束了, 然后p++一次。q也一样
作者: d19890104 发布时间: 2010-08-27
QUOTE:
while ( *p++ != '/' && *q++ != '*' ) //不知道为什么这里只循环一次
*p++ 等于 *p;p++; ( ...
d19890104 发表于 2010-08-27 10:25
*p++ 等于 *p;p++; ( ...
d19890104 发表于 2010-08-27 10:25
那里刚才写错了,下面条件是while ( *p++ != '*' && *q++ != '/' )
作者: 0vk0 发布时间: 2010-08-27
QUOTE:
我告诉一个非常简单的方法,clang,clang的接口非常清晰,你可以调用cpp的命令进行预处理。
或者,gcc的li ...
prolj 发表于 2010-08-27 09:32
或者,gcc的li ...
prolj 发表于 2010-08-27 09:32
P姨,我不会啊,而且对C++我一窍不通
作者: 0vk0 发布时间: 2010-08-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28