#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void rempos(char str[], int pos);
void remchars(char [], char c);
int getcharpos(char str[], char c);
void remcnks(char str[], char cnk[]);
void replchars(char str[], char c1, char c2);
void replcnks(char str[], char cnk1[], char cnk2[]);
void reverse(char str[]);
int main(void) {
// your code goes here
return 0;
}
//remove character on position pos from a string
void rempos(char str1[], int pos)
{
int diff=len-pos;
memmove(str1
+pos
, str1
+pos
+1, diff
); }
//remove specified characters from a string
void remchars(char str[], char c)
{
char *pos;
}
// returns first occurrence of the character in a string
int getcharpos(char str[], char c)
{
char cstr[2] = {c , '\0'}; // convert char to string
return 0; // returns zero if not found
else
return ++pos; // begins with 0, so add 1 to position
}
//remove specified chunks from a string
void remcnks(char str[], char cnk[])
{
char *pos;
}
//replace specified characters in a string
void replchars(char str[], char c1, char c2)
{
char *pos;
*pos = c2;
}
//replace specified chunks in a string (size-independent, just remember about memory)
void replcnks(char str[], char cnk1[], char cnk2[])
{
char *pos;
while(pos
= strstr(str
, cnk1
)) {
}
}
//reverse a string
void reverse(char str[])
{
int i;
int mid = (len % 2) ? (len / 2) : ((len + 1) / 2);
for(i = 0; i <= mid; ++i)
{
char buf = str[i];
str[i] = str[len - i];
str[len - i] = buf;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdm9pZCByZW1wb3MoY2hhciBzdHJbXSwgaW50IHBvcyk7CnZvaWQgcmVtY2hhcnMoY2hhciBbXSwgY2hhciBjKTsKaW50IGdldGNoYXJwb3MoY2hhciBzdHJbXSwgY2hhciBjKTsgCnZvaWQgcmVtY25rcyhjaGFyIHN0cltdLCBjaGFyIGNua1tdKTsKdm9pZCByZXBsY2hhcnMoY2hhciBzdHJbXSwgY2hhciBjMSwgY2hhciBjMik7CnZvaWQgcmVwbGNua3MoY2hhciBzdHJbXSwgY2hhciBjbmsxW10sIGNoYXIgY25rMltdKTsKdm9pZCByZXZlcnNlKGNoYXIgc3RyW10pOwoKaW50IG1haW4odm9pZCkgewoKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9CgovL3JlbW92ZSBjaGFyYWN0ZXIgb24gcG9zaXRpb24gcG9zIGZyb20gYSBzdHJpbmcgCnZvaWQgcmVtcG9zKGNoYXIgc3RyMVtdLCBpbnQgcG9zKQp7CglpbnQgbGVuPXN0cmxlbihzdHIxKTsKCWludCBkaWZmPWxlbi1wb3M7CiAgICBtZW1tb3ZlKHN0cjErcG9zLCBzdHIxK3BvcysxLCBkaWZmKTsKfQoKLy9yZW1vdmUgc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBhIHN0cmluZwp2b2lkIHJlbWNoYXJzKGNoYXIgc3RyW10sIGNoYXIgYykKewogICAgY2hhciAqcG9zOwogICAgd2hpbGUocG9zID0gc3RyY2hyKHN0cixjKSkKICAgICAgICBtZW1tb3ZlKHBvcywgcG9zICsgMSwgc3RybGVuKHBvcykpOwp9CgovLyByZXR1cm5zIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGNoYXJhY3RlciBpbiBhIHN0cmluZwppbnQgZ2V0Y2hhcnBvcyhjaGFyIHN0cltdLCBjaGFyIGMpCnsKCWNoYXIgY3N0clsyXSA9IHtjICwgJ1wwJ307CQkvLyBjb252ZXJ0IGNoYXIgdG8gc3RyaW5nCiAgICBpbnQgcG9zID0gc3RyY3NwbihzdHIsIGNzdHIpOwoJaWYoIHBvcyA9PSBzdHJsZW4oc3RyKSkKCQlyZXR1cm4gMDsJCQkvLyByZXR1cm5zIHplcm8gaWYgbm90IGZvdW5kCgllbHNlCgkJcmV0dXJuICsrcG9zOwkJLy8gYmVnaW5zIHdpdGggMCwgc28gYWRkIDEgdG8gcG9zaXRpb24KfQoKLy9yZW1vdmUgc3BlY2lmaWVkIGNodW5rcyBmcm9tIGEgc3RyaW5nCnZvaWQgcmVtY25rcyhjaGFyIHN0cltdLCBjaGFyIGNua1tdKQp7CiAgICBjaGFyICpwb3M7CiAgICBpbnQgY2xlbiA9IHN0cmxlbihjbmspOwogICAgd2hpbGUocG9zID0gc3Ryc3RyKHN0ciwgY25rKSkKICAgICAgICBtZW1tb3ZlKHBvcywgcG9zICsgY2xlbiwgc3RybGVuKHBvcykgLSBjbGVuICsgMSk7Cn0KIAovL3JlcGxhY2Ugc3BlY2lmaWVkIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcKdm9pZCByZXBsY2hhcnMoY2hhciBzdHJbXSwgY2hhciBjMSwgY2hhciBjMikKewogICAgY2hhciAqcG9zOwogICAgd2hpbGUocG9zID0gc3RyY2hyKHN0ciwgYzEpKQogICAgICAgICpwb3MgPSBjMjsKfQogCi8vcmVwbGFjZSBzcGVjaWZpZWQgY2h1bmtzIGluIGEgc3RyaW5nIChzaXplLWluZGVwZW5kZW50LCBqdXN0IHJlbWVtYmVyIGFib3V0IG1lbW9yeSkKdm9pZCByZXBsY25rcyhjaGFyIHN0cltdLCBjaGFyIGNuazFbXSwgY2hhciBjbmsyW10pCnsKICAgIGNoYXIgKnBvczsKICAgIGludCBjbGVuMSA9IHN0cmxlbihjbmsxKSwgY2xlbjIgPSBzdHJsZW4oY25rMik7CiAgICB3aGlsZShwb3MgPSBzdHJzdHIoc3RyLCBjbmsxKSkKICAgIHsKICAgICAgICBtZW1tb3ZlKHBvcyArIGNsZW4yLCBwb3MgKyBjbGVuMSwgc3RybGVuKHBvcykgLSBjbGVuMSArIDEpOwogICAgICAgIG1lbWNweShwb3MsIGNuazIsIGNsZW4yKTsKICAgIH0KfQogCi8vcmV2ZXJzZSBhIHN0cmluZwp2b2lkIHJldmVyc2UoY2hhciBzdHJbXSkKewogICAgaW50IGk7CiAgICBpbnQgbGVuID0gc3RybGVuKHN0cikgLSAxOwogICAgaW50IG1pZCA9IChsZW4gJSAyKSA/IChsZW4gLyAyKSA6ICgobGVuICsgMSkgLyAyKTsKICAgIGZvcihpID0gMDsgaSA8PSBtaWQ7ICsraSkKICAgIHsKICAgICAgICBjaGFyIGJ1ZiA9IHN0cltpXTsKICAgICAgICBzdHJbaV0gPSBzdHJbbGVuIC0gaV07CiAgICAgICAgc3RyW2xlbiAtIGldID0gYnVmOwogICAgfQp9Cg==