c语言取消注释,去掉C/C++程序代码中的注释

本文介绍了一个C语言函数,用于去除C/C++程序中的注释,包括单行注释(//)、多行注释(/*...*/)以及字符串中的注释。函数通过遍历代码并使用switch-case语句进行处理,考虑了字符串和注释的嵌套关系,确保不破坏代码的结构。
摘要由CSDN通过智能技术生成

下面的代码比较复杂一些,请分段思考。

另外要联系思考:在""和''中间的双斜杠中第一个斜杠在"和'后面判断就跳过了,第二次是让case语句来处理,然而case的第一个if就是依靠前面是否已经探测到过"或',探测到了的话,要跳过。

还要考虑到非注释中的单引号''中间只能有一个/,否则C语句非法。

===============================================================================

/********************************************************

功能:去除C/C++中的注释

输入:指向C/C++程序代码的指针

来源:程序员面试宝典第45页

注意:①要考虑到""或' '中的//和/*,//和/*的嵌套关系。

②单引号、双引号中的//是两个字符,第一个字符在单引号的case语句中跳过了,

第二个字符则在case '/'中处理。

*********************************************************/

#include #include #include #include #include #include

void remove_comment(char *buf, size_t size)

{

char *p, *end, c;          //p-动态移动的字符指针,end-指向文件末尾的字符指针,c-存储没一个p指向的字符

char *sq_start, *dq_start; //sq_start-单引号开始位置(single),dq_start-双引号开始(double)

char *lc_start, *bc_start; //lc_start-//的开始位置

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值