Определить количество букв А в первом предложении заменить их на "*" с использованием файла - C (СИ)
Формулировка задачи:
Второй код
В трех предложения определить количество букв А в первом предложении заменить их на "*"
Решение задачи: «Определить количество букв А в первом предложении заменить их на "*" с использованием файла»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
const char CFileName[] = "file.txt";
int iCnt = 0;
char pszText[256] = {'\0'};
unsigned char* pstr;
FILE* f = fopen(CFileName, "r");
if (f == NULL)
{
perror(CFileName);
system("pause");
return EXIT_FAILURE;
}
while (fgets(pszText, sizeof(pszText) - 1, f))
{
for (pstr = (unsigned char*) pszText; *pstr; ++pstr)
{
if (*pstr== 0x80 || *pstr == 0xA0) // CP-866
{
++iCnt;
*pstr = '*';
}
printf("%c", *pstr);
}
}
fclose(f);
printf("\n\nTotal 'A' chars: %d\n", iCnt);
system("pause");
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с файлами и строками
- Объявляем константу, содержащую имя файла, с которым мы будем работать
- Инициализируем переменную iCnt, которая будет считать количество символов 'A'
- Создаем массив pszText, который будет хранить текст из файла
- Открываем файл с помощью функции fopen и проверяем, открылся ли он успешно
- Если файл не открылся, выводим сообщение об ошибке и завершаем работу программы
- Входим в цикл while, который будет читать строки из файла до тех пор, пока они есть
- Для каждой строки, читаемой из файла, выполняем цикл for, который будет проверять каждый символ этой строки
- Если символ равен 0x80 или 0xA0 (это символы 'A' в кодировке CP-866), увеличиваем счетчик iCnt и заменяем символ на '*'
- Выводим символ на экран
- Закрываем файл с помощью функции fclose
- Выводим общее количество символов 'A'
- Завершаем работу программы