Переполнение стека при выводе содержимого файла - 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);
Объяснение кода листинга программы
out_str
- это массив символов, в который считываются данные из файла.f_count
- это счетчик, который отслеживает количество прочитанных символов.EOF
- это специальный символ, который указывает на конец файла.break
- это оператор, который прекращает выполнение цикла.fgetc(fp)
- это функция, которая считывает один символ из файла, указанного в переменнойfp
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д