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)

Объяснение кода листинга программы

  1. Вводится переменная типа char с именем c.
  2. Значение переменной c инициализируется результатом функции getchar(), которая читает один символ из стандартного ввода.
  3. Запускается цикл while, который будет выполняться до тех пор, пока значение переменной c не станет равно EOF (константа, обозначающая конец файла).
  4. Внутри цикла while переменная c присваивается новое значение, снова результат функции getchar().
  5. Цикл while продолжается, пока не будет выполнено условие c!=EOF, то есть пока не будет достигнут конец файла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы