C语言操作题,希望简单实用,别写太长

不使用strcat 连接两个字符串;不使用strcpy 拷贝字符串;不使用strcmp 比较字符串;

#include<stdio.h>
#include<string.h>
void mystrcat(char str[],char str1[])
{
  int i=0,j=0,l=strlen(str);
  while(str1[j]!='\0')
    {
      str[l++]=str1[j++];
    }
  str[l]=0;

}
void mystrcpy(char str[],char str1[])
{
  int i=0;
  while(str1[i]!='\0')
    {
      str[i]=str1[i++];
    }
  str[i]=str1[i];
}
int mystrcmp(char str[],char str1[])
{
  int i=0;
  while(str[i])
    {
      if(str[i]==str1[i])
    i++;
      if(str[i]>str1[i])
    return 1;
      if(str[i]<str1[i])
     return -1;
    }
  if(strlen(str)==strlen(str1))
  return 0;
}
int main()
{
  char a[100]="sdk",b[20]="dkj",c[100];
  //  mystrcat(a,b);
  int i;
  printf("%s\t %s\n",a,b);
  mystrcat(a,b);
  printf("strcat is:%s\n",a);
  mystrcpy(c,a);
  printf("strcpy is:%s\n",c);
  i=mystrcmp(a,b);
  if(i>0)
    printf("%s大\n",a);
  if(i==0)
    printf("相等\n");
  if(i<0)
    printf("%s大\n",b);
  return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-12
编写一个标准strcpy函数的总分值为10

void strcpy( char *strDest, char *strSrc ) //2分
{
while( (*strDest++ = * strSrc++) != ‘\0’ );
}

void strcpy( char *strDest, const char *strSrc ) //将源字符串加const,表明其为输入参数,加2分
{
while( (*strDest++ = * strSrc++) != ‘\0’ );
}

void strcpy(char *strDest, const char *strSrc) //对源地址和目的地址加非0断言,加3分
{
assert( (strDest != NULL) && (strSrc != NULL) );
while( (*strDest++ = * strSrc++) != ‘\0’ );
}

char * strcpy( char *strDest, const char *strSrc ) ////为了实现链式操作,将目的地址返回,加3分!
{
assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ );
return address;
}
经典题

int mystrcmp( char *strDest, const char *strSrc )
{
 assert( (strDest != NULL) && (strSrc != NULL) );
int b;
 while( b = *strDest++ - *strSrc++);
continue;
return b;
}
相似回答