Переполнение стека при выводе содержимого файла - C (СИ)

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

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

Программа считывает имя файла с входного потока, отображает содержимое файла по 5 симвоов, Не пойму, из-за чего переполнение стека? Его и в отладчике не посмотришь, оно в самом конце появляется, когда надпись Press any Key to Continue
#include "stdio.h"
#include "stdlib.h"
#define CONSOLE_LEN 5

int quality_gf(char* in_str){
    FILE fp;
    fopen_s(&fp, in_str, "r");
    if (fopen_s(&fp, in_str, "r") == NULL)  return 1;
    else return 0;
}

void get_file(char* in_str,int len){
    int in_char;
    int i=0;
    while ((i < len) && (in_char = getchar()) != '\n'){
        in_str[i] = in_char;
        i++;
    }
    in_str[i] = '\0';
}

void show_console(char* out_str){
    if (out_str[0] == '\0') printf("Bol'she nu4ego net!");
    printf("%s  \n",out_str);
    printf("More?(1-Yes) \n");
}

int Rlast(){
    char in_char;
    fflush(stdin);
    in_char = getchar();
    if (in_char == '1') return 1;
    else return 0;
}

void f_read(const char* in_str, char* out_str, int len){
    static int f_seek;
    int f_count = 0;
    FILE* fp;
    fopen_s(&fp, in_str, "r");
    fseek(fp,f_seek,SEEK_SET);
    while (f_count < len){
        if (out_str[f_count] == EOF){ break; }
        out_str[f_count] = fgetc(fp);
        f_seek++;
        f_count++;
    }
    fclose(fp);
    out_str[f_count] = '\0';
}
 
void main(){
    char out_str[CONSOLE_LEN];
    char in_str[255];
    get_file(in_str,sizeof(in_str));
    if (quality_gf(in_str)){
        do{
            f_read(in_str, out_str,sizeof(out_str));
            show_console(out_str);
            } while (Rlast());
    }
    else printf("File NOT FOUND!   \n");
    system("pause");
};

Решение задачи: «Переполнение стека при выводе содержимого файла»

textual
Листинг программы
        if (out_str[f_count] == EOF){ break; }
        out_str[f_count] = fgetc(fp);

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

  1. out_str - это массив символов, в который считываются данные из файла.
  2. f_count - это счетчик, который отслеживает количество прочитанных символов.
  3. EOF - это специальный символ, который указывает на конец файла.
  4. break - это оператор, который прекращает выполнение цикла.
  5. fgetc(fp) - это функция, которая считывает один символ из файла, указанного в переменной fp.

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


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

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

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