#include <stdio.h>
#include <string.h>
void stringrev(char*s1)
{
char *start;
char *end;
if (s1==NULL)
{
return;
}
start=s1;
char *temp;
while (start<end)
{
*temp=*end;
*end=*start;
*start=*temp;
start ++;
end--;
}
}
int stringcomp(char*s1,char*s2)
{
if(s1==NULL && s2==NULL)
{
return 0;
}
if(s1==NULL || s2==NULL)
{
return -1;
}
while(*s1==*s2)
{
if(*s1=='\0')
{
return 0;
}
s1++;
s2++;
}
return (*s1-*s2);
}
int main()
{
//Test cases for string reverse
char test[1000]="abcdef";
stringrev(test);
if (stringcomp(test,"fedcba")==0)
{
}
else
stringrev(test);
if (stringcomp(test,"")==0)
{
}
else
stringrev(NULL);
stringrev(test);
if (stringcomp(test,"^fr@321")==0)
{
}
else
stringrev(test);
if (stringcomp(test," c b a ")==0)
{
}
else
stringrev(test);
if (stringcomp(test,"dcba")==0)
{
}
else
printf("Test 6 Failed.Returned string is %s\n",test
); char test2[1000];
test[800]='\0';
test2[800]='\0';
stringrev(test);
if (stringcomp(test,test2)==0)
{
}
else
//Test cases for string Compare
/*if (stringcomp("aaa","aaa")==0)
printf("Test 1 Passed");
else
printf("Test 1 Failed");
if (stringcomp(" aba"," aba")==0)
printf("Test 2 Passed");
else
printf("Test 2 Failed");
if (stringcomp("","")==0)
printf("Test 2 Passed");
else
printf("Test 2 Failed");
if (stringcomp("","aba")==-1)
printf("Test 2 Passed");
else
printf("Test 2 Failed");
if (stringcomp("aba","")==0)
printf("Test 2 Passed");
else
printf("Test 2 Failed");
if (stringcomp(" aba"," aba")==0)
printf("Test 2 Passed");
else
printf("Test 2 Failed");
*/
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnZvaWQgc3RyaW5ncmV2KGNoYXIqczEpCnsKCWNoYXIgKnN0YXJ0OwoJY2hhciAqZW5kOwoJaWYgKHMxPT1OVUxMKQoJewoJCXJldHVybjsKCX0KCXN0YXJ0PXMxOwoJY2hhciAqdGVtcDsKCWVuZD1zdGFydCtzdHJsZW4oczEpLTE7Cgl3aGlsZSAoc3RhcnQ8ZW5kKQoJewoJCSp0ZW1wPSplbmQ7CgkJKmVuZD0qc3RhcnQ7CgkJKnN0YXJ0PSp0ZW1wOwoJCXN0YXJ0ICsrOwoJCWVuZC0tOwoJfQp9CgppbnQgc3RyaW5nY29tcChjaGFyKnMxLGNoYXIqczIpCnsKCWlmKHMxPT1OVUxMICYmIHMyPT1OVUxMKQoJewoJCXJldHVybiAwOwoJfQoJaWYoczE9PU5VTEwgfHwgczI9PU5VTEwpCgl7CgkJcmV0dXJuIC0xOwoJfQoJd2hpbGUoKnMxPT0qczIpCgl7CgoJCWlmKCpzMT09J1wwJykKCQl7CgkJCXJldHVybiAwOwoJCX0KCQlzMSsrOwoJCXMyKys7Cgl9CglyZXR1cm4gKCpzMS0qczIpOwp9CgppbnQgbWFpbigpCnsKCS8vVGVzdCBjYXNlcyBmb3Igc3RyaW5nIHJldmVyc2UKCWNoYXIgdGVzdFsxMDAwXT0iYWJjZGVmIjsKCXN0cmluZ3Jldih0ZXN0KTsKCWlmIChzdHJpbmdjb21wKHRlc3QsImZlZGNiYSIpPT0wKQoJewoJCXByaW50ZigiVGVzdCAxIFBhc3NlZFxuIik7Cgl9CgllbHNlCgkJcHJpbnRmKCJUZXN0IDEgRmFpbGVkXG4iKTsKCQoJc3RyY3B5KHRlc3QsIiIpOwoJc3RyaW5ncmV2KHRlc3QpOwoJaWYgKHN0cmluZ2NvbXAodGVzdCwiIik9PTApCgl7CgkJcHJpbnRmKCJUZXN0IDIgUGFzc2VkXG4iKTsKCX0KCWVsc2UKCQlwcmludGYoIlRlc3QgMiBGYWlsZWRcbiIpOwoJCQoJCglzdHJpbmdyZXYoTlVMTCk7CglwcmludGYoIlRlc3QgMyBwYXNzZWRcbiIpOwoJCglzdHJjcHkodGVzdCwiMTIzQHJmXiIpOwoJc3RyaW5ncmV2KHRlc3QpOwoJaWYgKHN0cmluZ2NvbXAodGVzdCwiXmZyQDMyMSIpPT0wKQoJewoJCXByaW50ZigiVGVzdCA0IFBhc3NlZFxuIik7Cgl9CgllbHNlCgkJcHJpbnRmKCJUZXN0IDQgRmFpbGVkXG4iKTsKCQkKCXN0cmNweSh0ZXN0LCIgYSBiIGMgIik7CglzdHJpbmdyZXYodGVzdCk7CglpZiAoc3RyaW5nY29tcCh0ZXN0LCIgYyBiIGEgIik9PTApCgl7CgkJcHJpbnRmKCJUZXN0IDUgUGFzc2VkXG4iKTsKCX0KCWVsc2UKCQlwcmludGYoIlRlc3QgNSBGYWlsZWRcbiIpOwoJCgltZW1zZXQodGVzdCwwLDEwKTsJCglzdHJuY3B5KHRlc3QsImFiY2QiLDQpOwoJc3RyaW5ncmV2KHRlc3QpOwoJaWYgKHN0cmluZ2NvbXAodGVzdCwiZGNiYSIpPT0wKQoJewoJCXByaW50ZigiVGVzdCA2IFBhc3NlZFxuIik7Cgl9CgllbHNlCgkJcHJpbnRmKCJUZXN0IDYgRmFpbGVkLlJldHVybmVkIHN0cmluZyBpcyAlc1xuIix0ZXN0KTsKCWNoYXIgdGVzdDJbMTAwMF07CgltZW1zZXQodGVzdCwnYycsNDAwKTsKCW1lbXNldCh0ZXN0KzQwMCwnYicsNDAwKTsKCXRlc3RbODAwXT0nXDAnOwoJbWVtc2V0KHRlc3QyLCdiJyw0MDApOwoJbWVtc2V0KHRlc3QyKzQwMCwnYScsNDAwKTsKCXRlc3QyWzgwMF09J1wwJzsKCXN0cmluZ3Jldih0ZXN0KTsKCWlmIChzdHJpbmdjb21wKHRlc3QsdGVzdDIpPT0wKQoJewoJCXByaW50ZigiVGVzdCA3IFBhc3NlZFxuIik7Cgl9CgllbHNlCgkJcHJpbnRmKCJUZXN0IDcgRmFpbGVkXG4iKTsKCS8vVGVzdCBjYXNlcyBmb3Igc3RyaW5nIENvbXBhcmUKCS8qaWYgKHN0cmluZ2NvbXAoImFhYSIsImFhYSIpPT0wKQoJCXByaW50ZigiVGVzdCAxIFBhc3NlZCIpOwoJZWxzZQoJCXByaW50ZigiVGVzdCAxIEZhaWxlZCIpOwoJCQoJaWYgKHN0cmluZ2NvbXAoIiAgYWJhIiwiICBhYmEiKT09MCkKCQlwcmludGYoIlRlc3QgMiBQYXNzZWQiKTsKCWVsc2UKCQlwcmludGYoIlRlc3QgMiBGYWlsZWQiKTsKCQkKCWlmIChzdHJpbmdjb21wKCIiLCIiKT09MCkKCQlwcmludGYoIlRlc3QgMiBQYXNzZWQiKTsKCWVsc2UKCQlwcmludGYoIlRlc3QgMiBGYWlsZWQiKTsKCWlmIChzdHJpbmdjb21wKCIiLCJhYmEiKT09LTEpCgkJcHJpbnRmKCJUZXN0IDIgUGFzc2VkIik7CgllbHNlCgkJcHJpbnRmKCJUZXN0IDIgRmFpbGVkIik7CglpZiAoc3RyaW5nY29tcCgiYWJhIiwiIik9PTApCgkJcHJpbnRmKCJUZXN0IDIgUGFzc2VkIik7CgllbHNlCgkJcHJpbnRmKCJUZXN0IDIgRmFpbGVkIik7CglpZiAoc3RyaW5nY29tcCgiICBhYmEiLCIgIGFiYSIpPT0wKQoJCXByaW50ZigiVGVzdCAyIFBhc3NlZCIpOwoJZWxzZQoJCXByaW50ZigiVGVzdCAyIEZhaWxlZCIpOwoJKi8KCXJldHVybiAwOwp9