首页 > 其他 > 详细

删除C程序中的注释

时间:2014-02-16 06:03:43      阅读:390      评论:0      收藏:0      [点我收藏+]

搞神马软件著作权,什么,还得把所有注释去了,代码之间不能有空行。。。。

好吧,删到手麻还不知道删干净没有,突然想到,干嘛不用程序呢?


也不东藏西捏的,直接给出matlab的代码,matlab中直接可用:

% 删除C文件中的注释内容,删除注释后删除空行
% xiahouzuoxin
% 2014.02.15

% 测试OK,能删除C源文件中/**/和//格式的注释,能删除非首尾的空行

clc;
clear;

[fname,pname]=uigetfile(...
    {‘*.c‘;‘*.h‘;‘*.*‘},...
    ‘Input C File‘);
fid = fopen(fullfile(pname,fname), ‘r+‘);
c_codes = fread(fid, inf);

% 删除注释
is_notes = 0;
i = 1;
while 1
    % 终止程序
    if i>=length(c_codes)
        break;
    end    
    
    if is_notes == 0 && c_codes(i)==47 % ‘/‘
        if c_codes(i+1)==42 % ‘/*‘
            is_notes = 1; 
            c_codes(i) = 32; % 空格
            c_codes(i+1) = 32; % 空格
            i = i + 2;
            continue;
        elseif c_codes(i+1)==47 % ‘//‘
            is_notes = 2;
            c_codes(i) = 32; % 空格
            c_codes(i+1) = 32; % 空格
            i = i + 2;
            continue;
        end          
    elseif is_notes == 1 && c_codes(i)==42 % ‘*‘
        if c_codes(i+1)==47 % ‘*‘
            is_notes = 0;
            c_codes(i) = 32; % 空格
            c_codes(i+1) = 32; % 空格
            i = i + 2;
            continue;
        end   
    elseif is_notes == 2 && c_codes(i)==10 % ‘换行符‘
            is_notes = 0;
            i = i + 1;
            continue;
    end

    if is_notes ~= 0
        c_codes(i) = 32; % 空格 
    else
        % do nothing
    end
    i = i + 1;
end

% 删除空行
start_addr = 0;
is_null = 0;  % 初始化为0
end_while = 0;
i = 1;
while ~end_while
    if c_codes(i)==10  % 换行
        if is_null == 1  % 两个换行符之间全部为空格
             c_codes(start_addr:i-1) = [];
             i = start_addr;  % 删除后原向量长度将减小,要更新索引
        end
        start_addr = i;
        is_null = 1;
    elseif c_codes(i)~=32  % 不是空格
             is_null = 0;
    end
        
    i = i + 1;
    if i>=length(c_codes)
        end_while  =1; 
    end
end

% 写到新文件中
fid_new = fopen(‘new.c‘, ‘w+‘);
fwrite(fid_new, c_codes);
fclose(fid_new);

fprintf(‘Process successfull.\n‘);

% 关闭源文件
fclose(fid);

唠嗑几小下:

(1)根据换行符查找//注释的尾端

(2)先删除文档中所有注释后再进行空行处理,注释的处理是:将注释部分转换成空格

(3)我使用matlab而不用其它语言的原因有2,其一是我还算比较熟悉matlab,可视化及数据操作比C语言要强很多,其二,呃,惭愧,除了C语言和matlab外还不会用任何其它第三方计算机语言。。。


删除C程序中的注释

原文:http://blog.csdn.net/xiahouzuoxin/article/details/19246793

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!