gpt4 book ai didi

c - 如何使用c程序删除注释

转载 作者:行者123 更新时间:2023-11-30 16:41:21 24 4
gpt4 key购买 nike

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

  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

最佳答案

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

#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

关于c - 如何使用c程序删除注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com