Segmentation fault (core dumped): ошибка при любом вводе после компиляции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток. Не могли бы посмотреть программу и подсказать ошибку. При компиляции ничего не выдаёт, а вот после запуска при любом вводе пишет "Segmentation fault (core dumped)". Спасибо всем. Задача:"Вывести наиболее короткую строку стандартного входа. Делать предположения о длине строк запрещается"
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void main()
  4. {
  5. int i=1,nmin=0,lmin=0,ntek=1,ltek=0;
  6. FILE *f1;
  7. // начало считывания ввода, сохранения его посимвольно в файл
  8. // и поиск номера наиментшей строки
  9. fopen("f1", "w+");
  10. char c = getchar();
  11. while (c != EOF)
  12. {
  13. while ((c != '\n') && (c != EOF))
  14. {
  15. fputc(c, f1);
  16. c = getchar();
  17. ltek++;
  18. }
  19. fputc(c, f1);
  20. if (ltek > lmin)
  21. {
  22. nmin=ntek;
  23. }
  24. ntek++;
  25. ltek=1;
  26. c = getchar();
  27. }
  28. //у нас есть файл f1 со всем вводом и nmin, в котором номер наименьшей строки
  29. fseek(f1, 0, SEEK_SET); //возвращаем курсор в файле на начало
  30. while (i<nmin) //перемотка курсора до нужной строки
  31. {
  32. c = fgetc(f1);
  33. if (c == '\n')
  34. {
  35. i++;
  36. }
  37. }
  38. do //печать минимальной строки
  39. {
  40. c = fgetc(f1);
  41. printf("%c",c);
  42. }
  43. while (c != '\n');
  44. fclose(f1);
  45. }

Решение задачи: «Segmentation fault (core dumped): ошибка при любом вводе после компиляции»

textual
Листинг программы
  1. char c = getchar();
  2. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы