【发布时间】:2018-02-27 04:07:54
【问题描述】:
我刚刚学习 C,我正在尝试读取和写入现有文件。我的任务是从现有文件中删除以“%”开头的所有 cmets,例如:
- 这是一个例子
- 这也是一个例子
- %示例继续
- % 继续
- 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++。