请教C语言高手mystrcpy,mystrcat,mystrcmp的最简洁写法?

要求不能用整形变量i。
mystrcmp返回负数,0,或正数。
mystrcmp返回两个字符的ASCII之差值。

#include <stdio.h>
void mystrcpy(char *d , char *s )
{
while(*s) *(d++) = *(s++);
*d = '\0';
}
void mystrcat(char *d , char *s )
{
while(*d) d++;
while(*s) *(d++) = *(s++);
*d = '\0';
}
int mystrcmp(char *s , char *t )
{
while( *s && *t && *s == *t ) s++,t++;
return *s - *t;
}
int main(int argc, char *argv[])
{
char s1[32] = "sdfsfsdgsd";
char s2[32] = "sdgsdf";
puts(s1);
puts(s2);
printf("cmp:%d\n",mystrcmp(s1,s2));
mystrcpy(s1,s2);
puts(s1);
puts(s2);
printf("cmp:%d\n",mystrcmp(s1,s2));
mystrcat(s1,s2);
puts(s1);
puts(s2);
printf("cmp:%d\n",mystrcmp(s1,s2));
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-22
  //大概这样
  #include<stdio.h>
  int mystrcmp(const char *left,const char *right)
  {
  const char *p=left;
  const char *q=right;
  while(*p!='\0'&&*q!='\0'&&*p==*q)
  {
  p++;q++;
  }
  if(*p=='\0'&&*q=='\0')
  return 0;
  return *p-*q;
  }

  char *mystrcat(char *dest,const char *src)
  {
  const char *p=src;
  char *q=dest;
  while(*q!='\0')
  q++;
  while(*p!='\0')
  *q++=*p++;
  *q='\0';
  return dest;
  }

  char *mystrcpy(char *dest,const char *src)
  {
  const char *p=src;
  char *q=dest;
  while(*p!='\0')
  {
  *q++=*p++;
  }
  *q='\0';
  return dest;
  }
  int main()
  {
  char d[10];
  char *s="hello";
  mystrcpy(d,s);
  printf("%s",d);
  return 0;
  }
相似回答