Segmentation fault (core dumped): ошибка при любом вводе после компиляции - C (СИ)
Формулировка задачи:
Всем доброго времени суток. Не могли бы посмотреть программу и подсказать ошибку. При компиляции ничего не выдаёт, а вот после запуска при любом вводе пишет "Segmentation fault (core dumped)". Спасибо всем.
Задача:"Вывести наиболее короткую строку стандартного входа. Делать предположения о длине строк запрещается"
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i=1,nmin=0,lmin=0,ntek=1,ltek=0;
FILE *f1;
// начало считывания ввода, сохранения его посимвольно в файл
// и поиск номера наиментшей строки
fopen("f1", "w+");
char c = getchar();
while (c != EOF)
{
while ((c != '\n') && (c != EOF))
{
fputc(c, f1);
c = getchar();
ltek++;
}
fputc(c, f1);
if (ltek > lmin)
{
nmin=ntek;
}
ntek++;
ltek=1;
c = getchar();
}
//у нас есть файл f1 со всем вводом и nmin, в котором номер наименьшей строки
fseek(f1, 0, SEEK_SET); //возвращаем курсор в файле на начало
while (i<nmin) //перемотка курсора до нужной строки
{
c = fgetc(f1);
if (c == '\n')
{
i++;
}
}
do //печать минимальной строки
{
c = fgetc(f1);
printf("%c",c);
}
while (c != '\n');
fclose(f1);
}Решение задачи: «Segmentation fault (core dumped): ошибка при любом вводе после компиляции»
textual
Листинг программы
char c = getchar(); while(c!=EOF)
Объяснение кода листинга программы
- Вводится переменная типа char с именем
c. - Значение переменной
cинициализируется результатом функцииgetchar(), которая читает один символ из стандартного ввода. - Запускается цикл while, который будет выполняться до тех пор, пока значение переменной
cне станет равно EOF (константа, обозначающая конец файла). - Внутри цикла while переменная
cприсваивается новое значение, снова результат функцииgetchar(). - Цикл while продолжается, пока не будет выполнено условие
c!=EOF, то есть пока не будет достигнут конец файла.