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