你能帮我编写一个删除文本文件中某一行的程序吗?
我打算使用:
fgets 从文本文件中捕获一行并将其存储在一个数组中,但我很困惑 fgets 如何将该行存储在一个数组中(它是否捕获该行并将其存储在第一个索引中,并且下次它捕获一行时会这将存储到下一个索引还是只覆盖数组的第一个索引?)
如果该行存储在不同的索引中,我将有一个条件,将用户的输入与捕获的 fgets 行进行比较,如果相等,它将跳过该行并执行规则,直到它到达文件末尾。
然后我会像这样关闭 fclose(stream) 文本文件并将其重新打开为“wt”以覆盖文件中写入的所有内容。
我的逻辑是否正确...或者您可以提出更好的解决方案...希望您能帮助我了解 fgets 如何将行存储在数组中...
顺便说一句,这是我正在尝试进行测试的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct studentinfo{
char id[8];
char name[30];
char course[5];
}s1;
int main(void){
FILE *stream = NULL;
stream = fopen("studentinfo.txt", "rt");
char arr[100];
int i=0;
while(!feof(stream)){
fgets(arr, 100, stream);
printf("%s", arr);
}
fclose(stream);
/*planning to reopen the stream but will change "rt" to "wt"*/
getch();
}