C语言,请高手帮忙
- 提问者网友:黑米和小志
- 2021-04-15 05:25
- 五星知识达人网友:洒脱疯子
- 2021-04-15 06:40
#include<stdio.h>
#define MAX 20
int n1,n2;
void lenstr(char *p1,char *p2)
{
int i;
printf("str1 lenstr:");
for (i=0;*(p1+i)!='\0';i++);
printf("%d\n",n1=i);
printf("str2 lenstr:");
for (i=0;*(p2+i)!='\0';i++);
printf("%d\n",n2=i);
}
void catstr(char *p1,char *p2)
{
int i=0,j;
for (i=0;*(p1+i)!='\0';i++);
for (j=0;*(p2+j)!='\0';j++)
p1[i+j]=p2[j];
p1[j+i]='\0';
printf("连接后的字符为:");
puts(p1);
for (i=0;p1[i]!='\0';i++) ;
printf("连接后的字符串长为:%d\n",i);
printf("\n");
}
void cmpstr(char *p1,char *p2)
{
int i;
int n;
int x=-1;
n1>n2?n=n1:n=n2;
for (i=0;i<n;i++)
{
if (p1[i]>p2[i]) {x=1;break;}
else if(*(p1+i)==*(p2+i) && i+1==n1 && n1==n2) {x=0;}
else {x=-1;break;}
}
if (x==1) {printf("str1字符串大于str2\n");catstr(p1,p2);}
else if (x==0) {printf("str1与str2相等\n");catstr(p1,p2);}
else if (x==-1) {printf("str2字符串大于str1\n");catstr(p2,p1);}
}
void main()
{
char str1[MAX],str2[MAX];
printf("str1 Input:");
gets(str1);
printf("str2 Input:");
gets(str2);
lenstr(str1,str2);
cmpstr(str1,str2);
} for (i=0;*(p1+i)!='\0';i++);
for (j=0;*(p2+j)!='\0';j++)
p1[i+j]=p2[j];
p1[j+i]='\0';
printf("连接后的字符为:");
puts(p1);
for (i=0;p1[i]!='\0';i++) ;
printf("连接后的字符串长为:%d\n",i);
printf("\n");
}
void cmpstr(char *p1,char *p2)
{
int i;
int n;
int x=-1;
n1>n2?n=n1:n=n2;
for (i=0;i<n;i++)
{
if (p1[i]>p2[i]) {x=1;break;}
else if(*(p1+i)==*(p2+i) && i+1==n1 && n1==n2) {x=0;}
}
if (x==-1) {printf("str1字符串大于str2\n");catstr(p1,p2);}
else if (x==0) {printf("str1与str2相等\n");catstr(p1,p2);}
else {printf("str2字符串大于str1\n");catstr(p2,p1);}
}
void main()
{
char str1[MAX],str2[MAX];
printf("str1 Input:");
gets(str1);
printf("str2 Input:");
gets(str2);
lenstr(str1,str2);
cmpstr(str1,str2);
}
- 1楼网友:零点过十分
- 2021-04-15 07:39
#include <stdio.h>
int lenstr(char *str) { int len; if(!str) { printf("string is NULL!\n"); return -1; }
for(len=0;*(str++) != '\0';len++) ; return len; }
char *catstr(char *des, char *src) { int len; char *result,*p; if (!des||!src) { printf("string is NULL!\n"); return NULL; } len=lenstr(des)+lenstr(src); result=(char *)malloc(len+1); p=result; for(;*des!='\0';) *(p++)=*(des++); for(;*src!='\0';) *(p++)=*(src++); *p=0; return result; }
int cmpstr(char *str1, char *str2) { int result; if (!str1||!str2) { printf("string is NULL!\n"); result= -2; goto end; } while (*str1!=0&&*str2!=0) { if(*str1>*str2) { result= 1; goto end; } else if (*str1<*str2) { result= -1; goto end; } str1++; str2++; } if (!(*str2)&&!(*str1)) result= 0; else if(!(*str1)) result= -1; else result= 1; end: return result; } int main() { char *str1="hello world!"; char *str2="hello!"; char *tmp; printf("%s length is %d\n%s length is %d\n", str1,lenstr(str1),str2,lenstr(str2)); if(cmpstr(str1,str2)>=0) tmp=catstr(str2,str1); else tmp=catstr(str1,str2); printf("%s length is %d\n",tmp,lenstr(tmp)); free(tmp); getch(); return 0; }