【问题标题】:How to remove a comment using a c program如何使用 c 程序删除评论
【发布时间】:2018-02-27 04:07:54
【问题描述】:

我刚刚学习 C,我正在尝试读取和写入现有文件。我的任务是从现有文件中删除以“%”开头的所有 cmets,例如:

  1. 这是一个例子
  2. 这也是一个例子
  3. %示例继续
  4. % 继续
  5. Eaxmple123456 % 示例

如上例所示,我将删除第 3 行和第 4 行以及右侧的所有内容,包括第 5 行中的 %。但是,我会将第 1、2 行和第 5 行的前半部分写入现有文件。

我想要做的是读取文件,直到它从那里点击“%”它会跳到下一行,这个过程将一直持续到 EOF。到目前为止,这是我的代码。

#include <stdio.h>
#include<stdlib.h>

int main()
{ 
    FILE *fpointer1,*fpointer2;
    int letter;
    char *mode1 = "r";
    char *mode2 = "w";
    fpointer1 = fopen("example_file.m",mode1);
    fpointer2 = fopen("example_file2.m",mode2);


                     while(letter != EOF){ //opens while                                        

                              if(letter!='%')
                             fputc(letter,fpointer2);


                                   else { //opens else


                                           while(letter!='\n'&&letter!='%'){ // opens 2nd while
                                               letter=fgetc(fpointer1);

                } // closes second while
            } // closes else
    }, // closes while

    fclose(fpointer1);
    fclose(fpointer2);

    return 0;
} // end program

【问题讨论】:

  • 您需要发布一些您尝试过的代码以及您需要帮助的特定问题。
  • 对不起,我刚刚上传了我的代码。 @乔
  • 出了什么问题?
  • 1) fpointer1 = fopen("example_file.m",mode1); fpointer2 = fopen("example_file.m",mode2); : 使用临时文件或一次性读取所有文件并输出。 2) fpointer1++; : 很糟糕。
  • 你已经完成了。扔掉fpointer++

标签: c comments


【解决方案1】:

如本例所示,将状态变量添加为“incomment”将非常有帮助。

#include <stdio.h>
#include <stdlib.h>

int main()
{ 
    FILE *fpointer1,*fpointer2;
    int letter, incomment = 0;
    char *mode1 = "r";
    char *mode2 = "w";
    fpointer1 = fopen("example_file.m",mode1);
    fpointer2 = fopen("example_file2.m",mode2);


    while ((letter=fgetc(fpointer1)) != EOF) { //opens while

        if(letter=='%') {
            incomment = 1;
        }
        else if(letter=='\n') {
            incomment = 0;
        }

        if(!incomment) {
            fputc(letter,fpointer2);
        }
    } // closes while

    fclose(fpointer1);
    fclose(fpointer2);

    return 0;
} // end program

【讨论】:

  • 好的,我试试看!
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 2014-01-16
  • 2012-03-09
  • 2016-04-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多