Заменить в строке все удвоенные символы на один - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д