Можете ли вы помочь мне написать программу, которая удаляет определенную строку в текстовом файле.
Я планирую использовать:
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();
}