纯大学牲,这个s1和s2怎么比啊,不会

img


字母怎么比较
不是怎么还要三十个字符啊我也没什么问题的
谢谢大家,谢谢你们

函数原型:int strcmp(const char* str1, const char* str2)
头 文 件:#include <string.h>
返 回 值:str1 = str2 则返回0,
str1 > str2 则返回大于0的值,
str1 < str2 则返回小于0的值

返回正数

把代码敲到电脑里实际运行一下看结果。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/184322
  • 这篇博客也不错, 你可以看下10.5【指针编程】编写一个函数,利用指针将输入的两个字符串s1和s2连接起来,要求短的在前
  • 除此之外, 这篇博客: 字符串处理:输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如输入"BEIJING", "123", 3,则输出:"BEI123JING"。中的 样例输出: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    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

    两种方法大同小异,算是殊途同归。

  • 以下回答来自chatgpt:

    解决方案:

    比较字符串可以使用字符串库中的函数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对应的要统一大小写才有比较的意义。

    参考资料:

    1. 《尚硅谷C语言教程》

    2. https://zh.cppreference.com/w/c/string/byte/strcmp

    3. https://baike.baidu.com/item/strcmp%28%29/3679449?fromtitle=strcmp&fromid=258026&fr=aladdin


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^