📄 deletec.c
字号:
//---------------------------------------------------------------------------
/* 这个程序删除 C 语言源程序中所有的无用字符,即注释、空白类字符
* 并保持程序意义不变。 */
/* 这个程序到目前为止尚不能正常工作,有待进一步对问题进行分析。 */
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
int ch, oldch;
FILE *in, *out;
if(argc != 3) {
fprintf(stderr, "使用方法:%s 输入文件 输出文件。\n", *argv);
exit(-1);
}
else {
if((in = fopen(*++argv, "rt")) == NULL) {
fprintf(stderr, "输入文件 %s 打开错误。", *argv);
exit(-2);
}
if((out = fopen(*++argv, "wt")) == NULL) {
fprintf(stderr, "输出文件 %s 打开错误。", *argv);
exit(-3);
}
}
for(ch = fgetc(in); ch != EOF; ch = fgetc(in)) {
if(ch == '\"') { /* 遇到了字符串 */
do {
fputc(ch, out);
ch = fgetc(in);
if(ch == '\\') { /* 这里处理嵌套的字符串 */
do { /* 形如:"abcd\"\"\"abcd\"\"\"\" " */
fputc(ch, out);
fputc(fgetc(in), out);
ch = fgetc(in);
} while(ch != EOF && ch == '\\');
}
} while(ch != EOF && ch != '\"');
if(ch == '\"')
fputc(ch, out);
}
else if(ch == '/') {
oldch = ch;
ch = fgetc(in);
putchar(ch);
if(ch == EOF)
break;
if(ch == '*') {
while(oldch = ch, (ch = fgetc(in)) != EOF && (oldch != '*' || ch != '/'));
continue;
}
if(ch == '/') {
while((ch = fgetc(in)) != EOF && ch != '\n');
continue;
}
fputc(oldch, out);
fputc(ch, out);
} /* 把下面这个判断去掉,就是删除 C 语言中所有注释的程序 */
else if(isspace(ch)) {
// if(ch != '\n')
fputc(ch, out);
while((ch = fgetc(in)) != EOF && isspace(ch));
ungetc(ch, in);
}
else
fputc(ch, out);
}
fclose(in);
fclose(out);
return 0;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -