P161. To reverse string words.
#include<stdio.h>
int
my_strlen(const char *);
int
my_strcmp(const char *,const char *);
const
char * my_strchr(const char *,char);
void
my_strcpy(const char *,char *);
void
my_strcat(const char *,char *);
void
my_strrev2(char *,int);
void
my_strrev1(char *,char *);
void
my_strrev(char *);
void
my_strupr(char *);
void
main()
{
char c[30],*cp,*s;
printf("Enter the string :
");
scanf("%[^\n]",c);
s=c;
while(cp=my_strchr(s,' '))
{
my_strrev1(s,cp-1);
s=cp+1;
}
my_strrev(s);
printf("%s",c);
}
int
my_strcmp(const char *p,const char *q)
{
while(*p)
{
if(*p==*q)
{
p++,q++;
}
else
return *p-*q;
}
}
void
my_strcat(const char *p,char *q)
{
while(*q)
q++;
while(*p)
{
*q=*p;
q++;
p++;
}
}
void
my_strrev2(char *p,int i)
{
char *q=p+i-1;
while(p<q)
{
*p=*p^*q;
*q=*p^*q;
*p=*p^*q;
p++;
q--;
}
}
void
my_strrev1(char *p,char *q)
{
while(p<q)
{
*p=*p^*q;
*q=*p^*q;
*p=*p^*q;
p++;
q--;
}
}
void
my_strrev(char *p)
{
// using index
/*
int i,j,len;
for(len=0;p[len];len++);
for(i=0,j=len-1;i<j;i++,j--)
{
p[i]=p[i]^p[j];
p[j]=p[i]^p[j];
p[i]=p[i]^p[j];
}
*/
//using pointer
char *q;
q=p;
while(*q)
q++;
q--;
while(p<q)
{
*p=*p^*q;
*q=*p^*q;
*p=*p^*q;
p++;
q--;
}
}
void
my_strcpy(const char *p,char *q)
{
// using index
/*
int i;
for(i=0;p[i];i++)
{
q[i]=p[i];
}
*/
// using pointers
while(*p)
{
*q++=*p++;
}
}
int
my_strlen(const char *p)
{
int i;
for(i=0;p[i];i++);
return i;
}
void
my_strupr(char *p)
{
int i;
for(i=0;p[i];i++)
if(p[i]>='a' &&
p[i]<='z')
p[i]=p[i]-32;
}
const
char *my_strchr(const char *p,char ch)
{
int i;
for(i=0;p[i];i++)
if(p[i]==ch)
return p+i;
return 0;
}
Comments
Post a Comment