Заменить в строке все удвоенные символы на один - C (СИ)
Формулировка задачи:
Разработать алгоритм и программу по следующим условием :
Ввести строку длиной до 30 символов , заменить в ней все удвоенные символы на один, пробел - в знак подчеркивания , сообщения ' ** ' на многие точку " ...".
Организовать простой диалог с пользователем для повторения работы программы. Выходные данные каждого цикла работы программы записать в отдельный файл. Реализация должна быть рациональной и работать для общего случая .
Решение задачи: «Заменить в строке все удвоенные символы на один»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(){
- char *str, *name;
- int index, i, j, loop, counter=0, nIndex;
- FILE* oFile;
- do{
- index=-1;
- nIndex=-1;
- i=0;
- j=0;
- loop=0;
- str=(char*)malloc(sizeof(char)*31);
- name=(char*)malloc(0);
- printf("Enter sequence of characters: ");
- do{
- index++;
- if((str[index]=getchar())=='\n'){
- str[index]='\0';
- str=(char*)realloc(str, sizeof(char)*(index+1));
- }
- if(index==29){
- index++;
- str[index]='\0';
- }
- }while((str[index]!='\0'));
- printf("Enter name of file: ");
- do{
- nIndex++;
- name=(char*)realloc(name, sizeof(char)*(nIndex+1));
- if((name[nIndex]=getchar())=='\n'){
- name[nIndex]='\0';
- }
- }while((name[nIndex]!='\0'));
- oFile=fopen(name, "w");
- fflush(stdin);
- while(i<index-1){
- if((str[i]=='*') && (str[i+1]=='*')){
- index++;
- str=(char*)realloc(str, sizeof(char)*(index));
- for(j=index-1; j>i+1; j--){
- str[j]=str[j-1];
- }
- str[i]=str[i+1]=str[i+2]='.';
- i+=3;
- }else if(str[i]==str[i+1]){
- for(j=i+1; j<index; j++){
- str[j]=str[j+1];
- }
- index--;
- str=(char*)realloc(str, sizeof(char)*(index));
- }else{
- i++;
- }
- }
- i=0;
- while(i<index-1){
- if(str[i]==' '){
- str[i]='_';
- }
- i++;
- }
- fprintf(oFile, str);
- fclose(oFile);
- fflush(stdin);
- printf("Do you want to repeat(enter 1 to continue): ");
- scanf("%i", &loop);
- printf("\n");
- counter++;
- fflush(stdin);
- free(str);
- free(name);
- }while(loop==1);
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д