搞神马软件著作权,什么,还得把所有注释去了,代码之间不能有空行。。。。
好吧,删到手麻还不知道删干净没有,突然想到,干嘛不用程序呢?
也不东藏西捏的,直接给出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外还不会用任何其它第三方计算机语言。。。
原文:http://blog.csdn.net/xiahouzuoxin/article/details/19246793