Программа не выполняет то что должна - 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();
}

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

  1. В начале программы подключаются необходимые библиотеки.
  2. Затем определены и инициализированы переменные: — f и Out — указатели на файлы; — fn и result — массивы для ввода имен файлов.
  3. Пользователю предлагается ввести имя исходного файла, после чего выполняется попытка его открытия. Если файл не найден или его открытие невозможно, выводится сообщение об ошибке и запрашивается правильное имя файла.
  4. После успешного открытия исходного файла пользователю предлагается ввести имя результирующего файла. Если файл не может быть открыт, выводится сообщение об ошибке.
  5. Затем выполняется цикл по символам исходного файла. Если текущий символ не является пробелом, он записывается в результирующий файл, а затем записывается пробел.
  6. По завершении цикла выводится сообщение End of program, после чего файлы закрываются.
  7. Программа возвращает 0, что означает успешное завершение.
  8. Выводится сообщение Press any key to continue, чтобы программа не закрылась сразу после выполнения.

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


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

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

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