请教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;
  }

...通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp...
strcat(char *p1,char *p2,char *p){ while(*p1) \/\/检查指针是否到了'\\0'{ p=*p1; \/\/赋值 p1++; \/\/指针指向下一个字符 p++;} while(*p2){ p=*p2;p2++;p++;} p='\\0'; \/\/为str3结尾加上'\\0'} 这个是strcat是3个形参的,两个形参的是这样写的 void strcat(char *p1, ...

C语言的小程序,求解
mystrcpy(str1,tmpstr);printf("%s\\n",str1);mystrncpy(str1,str2,3);printf("%s\\n",str1);mystrnmcpy(str1,str2,1,3);printf("%s\\n",str1);printf("%d\\n",mystrcmp(str1,str2));return 0;}

相似回答