Программа, преобразующая буквы к верхнему регистру - C (СИ)

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

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

Дан текстовый файл. Получить новый файл, образованный из первого заменой всех его строчных (маленьких) букв прописными (большими). Если замена не производилась, сообщить об этом.
#include<stdio.h>;
#include<stdlib.h>;
#include<string.h>;
#include<ctype.h>;
#include<math.h>;
#include<fcntl.h>;
#include<io.h>;
 
const maxlen=255;
char st[maxlen];
unsigned int i;
void main()
{
FILE *inp, *out;
unsigned int k=0;
inp = fopen("C:\\HELP.txt", "r");
out = fopen("C:\\new_file.txt", "w");
   while (feof(inp) == 0)
   { fgets(st, maxlen, inp);
   for(i=0; i<strlen(st);i++)
   {
   if (st[i]>='a' && st[i]<='z')
   {st[i]=toupper(st[i]);
   k++;}
   else
    { if (st[i]>='*' && st[i]<='Ї')
     {st[i]=st[i]-32;
      k++;}
      else
       {if (st[i]>='а' && st[i]<='п')
    {st[i]=st[i]-80;
    k++;}
       }
    }
   }
 fputs(st, out);
 }
 fclose(inp);
 fclose(out);
if (k==0)
printf("Замена не производилась!");
}
Вот мой вариант. Но он почему то не работает. Программа как будто зацикливается. Ребят помогите пожалуйста исправить!!!
Похоже нужно как-то перевести курсор в файле. Там где цикл while видно только первая строчка читается и происходит зацикливание.
Кстати где '*' должна быть 'а', где 'I' - 'п', где 'а' - 'р', а где 'п' - 'я'.

Решение задачи: «Программа, преобразующая буквы к верхнему регистру»

textual
Листинг программы
    if ( ! inp || ! out ) {
        perror("fopen");
        exit(1);
    }
    while ( ( ch = fgetc(inp) ) != EOF ) {
        if ( islower(ch) )
            ++k;
        if ( fputc(toupper(ch), out) == EOF ) {
            perror("fputc");
            exit(1);
        }
    }

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

  1. Открывается файл для чтения и записи с помощью функции fopen.
  2. Проверяется корректность открытия файла с помощью проверки наличия ошибок в файле и его открытости.
  3. В случае возникновения ошибки открывания файла, выводится сообщение об ошибке и программа завершается.
  4. С помощью цикла while считываются символы из файла до достижения конца файла.
  5. Для каждого считанного символа проверяется его регистр с помощью функции islower. Если символ является строчной буквой, то увеличивается счетчик k.
  6. С помощью функции toupper символ преобразуется в верхний регистр.
  7. Символ записывается в файл для записи с помощью функции fputc.
  8. В случае возникновения ошибки записи символа в файл, выводится сообщение об ошибке и программа завершается.

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


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

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

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