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
, то есть пока не будет достигнут конец файла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д