⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deletec.c

📁 删除 C 语言中所有注释的程序
💻 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 + -