c语言,字符数组函数

如题所述

#include <stdio.h>

/*比较两个字符串*/
/*src、dst相等 return 1*/
/*src比dst短 return -2*/
/*src比dst长 return 2*/
/*src、dst长度一致但不相等 return -1*/
int stringCmp (char *src, char *dst) {  
if (strlen (src) < strlen (dst))
return -2;
else if (strlen (src) > strlen (dst))
return 2;
else {
while (*src && *dst) {
if (*src != *dst)
return -1;
src++;
dst++;
}
return 1;
}
}

/*合并两个字符串*/
void mergeString(char* str1, char* str2, char* merge) {
while (*merge++ = *str1++); /*复制str1并将指针移动到字符串的末尾的下一个位置*/
merge--; /*退到字符串的末尾*/
while (*merge++ = *str2++); /*从末尾(\0)的位置开始将str2拷贝进来*/
*merge = '\0';
}

int main(void) {
char *str1_1="hel",*str1_2="lo", *merge1;
char *str2_1="ness",*str2_2="happy", *merge2;
char *str3_1="hi",*str3_2="hi", *merge3;
char *str4_1="hello",*str4_2="world", *merge4;

puts ("第1组字符串:");
puts (str1_1);
puts (str1_2);

if (stringCmp (str1_1, str1_2) == 1)
puts (str1_1);

else if (stringCmp (str1_1, str1_2) == -2) {
mergeString (str1_2, str1_1, merge1);
puts (merge1);
}

else if (stringCmp (str1_1, str1_2) == 2 || stringCmp (str1_1, str1_2) == -1) {
mergeString (str1_1, str1_2, merge1);
puts (merge1);
}

putchar ('\n');
puts ("======================================================");
putchar ('\n');

puts ("第2组字符串:");
puts (str2_1);
puts (str2_2);

if (stringCmp (str2_1, str2_2) == 1)
puts (str2_1);

else if (stringCmp (str2_1, str2_2) == -2) {
mergeString (str2_2, str2_1, merge2);
puts (merge2);
}

else if (stringCmp (str2_1, str2_2) == 2 || stringCmp (str2_1, str2_2) == -1) {
mergeString (str2_1, str2_2, merge2);
puts (merge2);
}

putchar ('\n');
puts ("======================================================");
putchar ('\n');

puts ("第3组字符串:");
puts (str3_1);
puts (str3_2);

if (stringCmp (str3_1, str3_2) == 1)
puts (str3_1);

else if (stringCmp (str3_1, str3_2) == -2) {
mergeString (str3_2, str3_1, merge3);
puts (merge3);
}

else if (stringCmp (str3_1, str3_2) == 2 || stringCmp (str3_1, str3_2) == -1) {
mergeString (str3_1, str3_2, merge3);
puts (merge3);
}

putchar ('\n');
puts ("======================================================");
putchar ('\n');

puts ("第4组字符串:");
puts (str4_1);
puts (str4_2);

if (stringCmp (str4_1, str4_2) == 1)
puts (str4_1);

else if (stringCmp (str4_1, str4_2) == -2) {
mergeString (str4_2, str4_1, merge4);
puts (merge4);
}

else if (stringCmp (str4_1, str4_2) == 2 || stringCmp (str4_1, str4_2) == -1) {
mergeString (str4_1, str4_2, merge4);
puts (merge4);
}

putchar ('\n');
puts ("======================================================");
putchar ('\n');

getch (); /*屏幕暂留*/
return 0;
}

运行结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-22
#include<stdio.h>
#include<string.h>

void fun(){
char str1[100],str2[100]; //两个字符串
int len1,len2; //字符串str1和str2的长度
scanf("%s",str1);
scanf("%s",str2);
len1=strlen(str1);
len2=strlen(str2);
if(!strcmp(str1,str2)){
printf("%s\n",str1);
return ;
}else{
if(len1<len2){
strcat(str2,str1);
printf("%s\n",str2);
return;
}

else if(len1>=len2){
strcat(str1,str2);
printf("%s\n",str1);
return ;
}
}
}

int main(){
fun();
}
这样应该满足要求了
第2个回答  2016-11-25
应该是练习strlen、strcat两个轮子函数的应用,如果不给用,只能造轮子了。
第3个回答  推荐于2017-08-23
#include <stdio.h>
#include <string.h>
int main()
{
    char a[100],b[100];
    int la, lb;

    scanf("%s%s",a,b);
    la = strlen(a);
    lb =strlen(b);
    if(la == la) printf("%s\n",a);
    else if(la < lb) 
    {
        strcat(b,a);
        printf("%s\n", b);
    }
    else
    {
        strcat(a,b);
        printf("%s\n", a);
    }
    return 0;
}

本回答被提问者和网友采纳
第4个回答  2017-08-22
#include "stdio.h"
#include "string.h"
int main(int argc,char *argv[]){
char a[51],b[51];
printf("Input 2 strings...\n");
scanf("%25s%25s",a,b);
fflush(stdin);
if(!strcmp(a,b))
printf("%s\n",a);
else if(strlen(a)>=strlen(b))
printf("%s\n",strcat(a,b));
else
printf("%s\n",strcat(b,a));
return 0;
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网