Написать программу, которая в текстовом файле, заменяет все строчные буквы прописными, и наоборот - C (СИ)
Формулировка задачи:
Помогите с задачей пожалуйста!
Написать программу, которая в текстовом файле, заменяет все строчные буквы прописными, и наоборот.
Решение задачи: «Написать программу, которая в текстовом файле, заменяет все строчные буквы прописными, и наоборот»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <ctype.h>
#define FILE_NAME "file.txt"
int main(void) {
struct stat sb;
off_t len;
char * p;
int fd;
if ( ( fd = open(FILE_NAME, O_RDWR) ) < 0 ) {
perror("open");
return 1;
}
if ( fstat(fd, &sb) < 0 ) {
perror("fstat");
return 1;
}
if ( ( p = mmap(0, sb.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0) ) == MAP_FAILED ) {
perror("mmap");
return 1;
}
if ( close(fd) < 0 ) {
perror("close");
return 1;
}
for ( len = 0; len < sb.st_size; ++len )
p[len] = ( isupper(p[len]) ) ? tolower(p[len]) : toupper(p[len]);
if ( munmap(p, sb.st_size) < 0 ) {
perror("munmap");
return 1;
}
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Подключается библиотека ctype.h для использования функций isupper, tolower, toupper
- Определяется имя файла, с которым будет работать программа
- Объявляется переменная типа int с именем main, которая всегда возвращает 0
- Определяется структура stat, используемая для получения информации о файле
- Открывается файл с помощью функции open. Если файл не может быть открыт, программа выводит сообщение об ошибке и возвращает 1
- Функция fstat используется для получения информации о файле
- Используется функция mmap для отображения файла в память. Если файл не может быть отображен в память, программа выводит сообщение об ошибке и возвращает 1
- Закрывается файловый дескриптор с помощью функции close
- Происходит замена строчных букв на прописные и наоборот с помощью цикла for и условий if
- Используется функция munmap для освобождения памяти, занимаемой файлом
- Программа возвращает 0, указывая, что все действия были выполнены успешно