Заменить в строке обозначение символа с заданным кодом на сам символ - C (СИ)
Формулировка задачи:
Помогите, пожалуйста... Срочно надо лабу сдать.
Заменить в строке принятое в Си обозначение символа с заданным кодом (например, \101) на сам символ (в данном случае - А)
Решение задачи: «Заменить в строке обозначение символа с заданным кодом на сам символ»
textual
Листинг программы
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
void main()
{ int j=0;
char a;
char str[50],str1[50],c[10]="0123456789";
byte x;
cout<<"Vvedi stroku ";
cin>>str;
for(int k=0;k<strlen(str);k++)
{
if(str[k]=='/')
{int r=0;
while(strchr(c,str[k+1])!=NULL) { r=r*10+str[k+1]-48;k++;}
a=r;
x=a;
str1[j]=x;j++; k++;
}
str1[j]=str[k];j++;
}
cout<<"Vyvod stroki "<<str1;
getch();
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и вводом-выводом данных.
- Объявление переменных:
j- счетчик для заполнения массиваstr1.a- временная переменная для хранения числового значения символа.str- строка, в которой нужно заменить обозначение символа на сам символ.str1- массив, в который будет записываться измененная строка.c- строка с обозначениями символов и их числовыми значениями.x- переменная для хранения байтового значения символа.
- Ввод строки с помощью
cinи вывод сообщения об этом. - Проверка каждого символа в строке на равенство обозначению символа '/'. Если это так, то начинается процесс замены.
- Внутри цикла, пока не будет найдено следующее вхождение обозначения символа, выполняется следующее:
- Переменная
rинициализируется как 0. Она будет использоваться для хранения числового значения символа. - С помощью функции
strchrи циклаwhileищется следующее вхождение обозначения символа в строкеc. - Когда
strchrвозвращает неNULL, это означает, что было найдено вхождение обозначения символа. - Числовое значение символа
str[k+1]добавляется кr, а затемkувеличивается на 1, чтобы перейти к следующему символу в строке. - Значение
rприсваивается переменнойa, а затемxприсваиваетсяa, чтобы получить байтовое значение символа. - Символ
xзаписывается в массивstr1с помощью индексаj, который увеличивается на 1 после каждой записи.
- Переменная
- Если символ не является обозначением символа, он просто записывается в массив
str1с помощью индексаj, который увеличивается на 1 после каждой записи. - Вывод измененной строки с помощью
cout. - Вызов функции
getchдля приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.