函数原型:int strcmp(const char* str1, const char* str2)
头 文 件:#include <string.h>
返 回 值:str1 = str2 则返回0,
str1 > str2 则返回大于0的值,
str1 < str2 则返回小于0的值
返回正数
把代码敲到电脑里实际运行一下看结果。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
BEI123JING
C语言代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
char s1[150],s2[150],s3[150];
int f,m,n,i,j=0,k=0;
gets(s1);
gets(s2);
scanf("%d",&f);
m=strlen(s1);
n=strlen(s2);
for(i=f;i<m;i++)
{
s3[k++]=s1[i];
}
for(i=f;i<n+f+1;i++)
{
s1[i]=s2[j++];
}
strcat(s1,s3);
s1[m+n]='\0'; //使s1与s2连接后的s1的最后为'\0'
printf("%s",s1);
return 0;
}
这是主要思路:
f把s1分成了两段:
第一步,把s1后半段放入s3
第二步,把s2连入s1
第三步,把s3连入s1
最后,输出s1
不过也不止一种方法
f把s1分成了两段:
第一步,把s1前半段放入s3
第二步,把s2连入s3
第三步,把s1后半段连入s3
最后,输出s3
两种方法大同小异,算是殊途同归。
解决方案:
比较字符串可以使用字符串库中的函数strcmp来比较,它会比较两个字符串是否相等,即字符串中的字符是否完全相同。
strcmp函数有以下语法格式: strcmp(str1, str2);
参数:
str1 -- 要进行比较的第一个字符串。
str2 -- 要进行比较的第二个字符串。
返回值:
如果str1str2,返回正数。
示例代码:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[15];
char str2[15];
int ret;
strcpy(str1, "abcdef");
strcpy(str2, "ABCDEF");
ret = strcmp(str1, str2);
if(ret < 0)
{
printf("str1 is less than str2");
}
else if(ret > 0)
{
printf("str2 is less than str1");
}
else
{
printf("str1 is equal to str2");
}
return 0;
}
输出结果为: 'str1 is less than str2', 因为在使用strcmp函数进行比较时,字符a的ASCII码小于字符A的ASCII码。
所以要比较大小写无论是str1对应的还是str2对应的要统一大小写才有比较的意义。
参考资料:
《尚硅谷C语言教程》
https://zh.cppreference.com/w/c/string/byte/strcmp
https://baike.baidu.com/item/strcmp%28%29/3679449?fromtitle=strcmp&fromid=258026&fr=aladdin