Ниже приведена программа, которую я написал в gdb по следующей ссылке:
https://www.onlinegdb.com/online_c_compiler
#include <stdio.h>
#include <string.h>
int main()
{
char abc[] = "love";
char *hon[100];
FILE *d, *e;
int n;
char c;
d = fopen("demo.txt", "r");
/*e = fopen("demo.txt", "w");*/
/*n = fputs(abc,e);*/
printf( "jhjhj \n");
while ((n = getc(d)) != EOF)
{
printf( "kjkjkkj \n");
if (n == 'a')
{
/*e = d;*/
/*n = putc('k',e);*/
}
}
printf("%s", abc);
printf("abcdefgh %d hjhjh %d", 5, 6);
putchar(abc[1]);
}
Но при попытке выполнить этот код возникает ошибка сегментации.
Я прошел через следующий вопрос:
Что такое ошибка сегментации?
Ошибка сегментации - это ошибка, которая возникает, когда мы пытаемся получить доступ к области памяти, которая не была назначена, или когда программа не имеет никакого доступа, или когда один процесс пытается получить доступ к области памяти, к которой другой процесс уже обращается.
Итак, я подумал, что открытие одного и того же файла в режиме чтения и записи может привести к этому, хотя я не мог объяснить, как это может происходить.
Таким образом, я прокомментировал часть, которая пытается получить доступ к файлу в режиме «записи».
Даже после этого я получил ту же ошибку ошибки сегментации.
Итак, я помещаю некоторые сообщения перед различными частями кода. Оказывается, я не смог получить сообщение прямо перед открытием.
Я не мог понять, как здесь нарушается доступ к правилам памяти, даже после комментирования части, открывшей файл в режиме записи.
Ждем идей и помощи.
Это из-за причины, по которой файл не существует. Но в этом случае при обнаружении EOF он должен выйти из цикла while, но почему ошибка?