Программа не выполняет то что должна - C (СИ)
Формулировка задачи:
помогите разобраться... программа не делает что должна (((
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *f, *Out; char fn[20],result[20]; int ch; printf("Enter File Name: \n"); scanf("%s", fn); if ((f=fopen(fn,"rt"))==NULL) { printf("Error! This file don`t find! \n"); printf("Enter correct file name:"); scanf("%s",fn); if ((f=fopen(fn,"rt"))==NULL){printf("Try again later!\n");} } printf("Enter result file name: \n"); scanf("%s", result); if ((Out=fopen(result,"wt"))==NULL) { printf("There is no file with this name!"); } while ((ch=fgetc(f))!=EOF) { while(ch==' ') {} while(ch!=' ') //что бы небыло в файле печатает в выходной один символ {fputc (ch,Out);} // пока не остановишь программу ((( что делать? fputc (' ',Out); } printf("End of program"); fclose(fn); fclose(result); return 0; getchar(); }
Решение задачи: «Программа не выполняет то что должна»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *f, *Out; char fn[20],result[20]; int ch; printf("Enter File Name: \n"); scanf("%s", fn); if ((f=fopen(fn,"rt"))==NULL) { printf("Error! This file don`t find! \n"); printf("Enter correct file name:"); scanf("%s",fn); if ((f=fopen(fn,"rt"))==NULL){printf("Try again later!\n");} } printf("Enter result file name: \n"); scanf("%s", result); if ((Out=fopen(result,"wt"))==NULL) { printf("There is no file with this name!"); } while ((ch=fgetc(f))!=EOF) { //while(ch==' ') //{} //while(ch!=' ')// вот здесь Вы сами загнали себя в цикл бесконечный. Ведь войдя в этот цикл ch не меняется, остается первым символом (не равным ' ') из входного файла if(ch!=' ') {fputc (ch,Out);} // пока не остановишь программу ((( что делать? fputc (' ',Out); } printf("End of program"); fclose(f);// fclose(Out);// return 0; getchar(); }
Объяснение кода листинга программы
- В начале программы подключаются необходимые библиотеки.
- Затем определены и инициализированы переменные:
—
f
иOut
— указатели на файлы; —fn
иresult
— массивы для ввода имен файлов. - Пользователю предлагается ввести имя исходного файла, после чего выполняется попытка его открытия. Если файл не найден или его открытие невозможно, выводится сообщение об ошибке и запрашивается правильное имя файла.
- После успешного открытия исходного файла пользователю предлагается ввести имя результирующего файла. Если файл не может быть открыт, выводится сообщение об ошибке.
- Затем выполняется цикл по символам исходного файла. Если текущий символ не является пробелом, он записывается в результирующий файл, а затем записывается пробел.
- По завершении цикла выводится сообщение
End of program
, после чего файлы закрываются. - Программа возвращает 0, что означает успешное завершение.
- Выводится сообщение
Press any key to continue
, чтобы программа не закрылась сразу после выполнения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д