Mam taki problem: jest takie polecenie żeby napisać program w którym podczas kopiowania z wejścia na wyjście zamiast 1 znaku \b (backspace) pojawi się ich kilka. Ja to rozumiem tak że po prostu wymaże się kilka znaków - tylko jak to zrobić? Zadanie jest w książce Ansi C (Kernigham , Ritchie) w elementarzu języka C - wnioskuję stąd, że problem trzeba rozwiązać bardzo prostymi środkami. Bardzo dziękuję za pomoc -Tomek
0
0
#include <stdio.h>
#include <string.h>
// To o co prosiles ...
char* chgchar(char* src,char inch,char outch,char count){
unsigned i=0,j=0,c=0;
while(src[i])c+=(src[i++]==inch);
char* dst=new char[1+(j=(i+(c*(count-1))))];
dst[j]=0;
while(i--)
if(src[i]==inch){
char k=count;
while(k--)dst[--j]=outch;
}else dst[--j]=src[i];
return dst;
}
// po malej przerobce: to, o co nie prosiles...
char* chgstring(char* src,char inch,char* outstr){
unsigned i=0,j=0,c=0,count=strlen(outstr);
while(src[i])c+=(src[i++]==inch);
char* dst=new char[1+(j=(i+(c*(count-1))))];
dst[j]=0;
while(i--)
if(src[i]==inch){
unsigned k=count;
while(k)dst[--j]=outstr[--k]; // while(k--)dst[--j]=outstr[k];
}else dst[--j]=src[i];
return dst;
}
void main(){
char* srce="ala ma kota";
char* dest;
printf("\noryginal : %s\nkopia : %s\n\n",srce,dest=chgchar(srce,'a','A',2));
delete dest;
printf("oryginal : %s\nkopia : %s\n\n",srce,dest=chgstring(srce,'l',"LEXANDRA"));
delete dest;
}