Программа, преобразующая буквы к верхнему регистру - 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); } }
Объяснение кода листинга программы
- Открывается файл для чтения и записи с помощью функции fopen.
- Проверяется корректность открытия файла с помощью проверки наличия ошибок в файле и его открытости.
- В случае возникновения ошибки открывания файла, выводится сообщение об ошибке и программа завершается.
- С помощью цикла while считываются символы из файла до достижения конца файла.
- Для каждого считанного символа проверяется его регистр с помощью функции islower. Если символ является строчной буквой, то увеличивается счетчик k.
- С помощью функции toupper символ преобразуется в верхний регистр.
- Символ записывается в файл для записи с помощью функции fputc.
- В случае возникновения ошибки записи символа в файл, выводится сообщение об ошибке и программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д