精华内容
下载资源
问答
  • 里给大家分享的是一个使用C语言实现的判断字符串中是否以某字符开头或者结尾的代码,非常的简单实用,希望大家能够喜欢
  • C语言判断字符串是否为回文

    千次阅读 2020-12-05 22:55:21
    C语言判断字符串是否为回文 回文就是字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。 /*判断字符串是否为回文*/ #include <stdio.h> int main(void) { int i,k; char line[10]; /*...

    C语言判断字符串是否为回文

    回文就是字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。

    /*判断字符串是否为回文*/
    #include <stdio.h>
    int main(void)
    {
        int i,k;
        char line[10];
        /*输入字符串*/
        printf("Enter a string:");
        k=0;
        while((line[k]=getchar())!='\n')
            k++;
        line[k]='\0';
        /*判断字符串line是否为回文*/
        i=0;//i是字符串首字符的下标 
        k=k-1;//k是字符串尾字符的下标 
        /*i和k两个下标从字符串首尾两端同时向中间移动,逐级判断对应字符是否相等*/
        while(i<k){
            if(line[i]!=line[k])//若对应字符不相等,则提前结束循环 
                break;
            i++;
            k--;
        } 
        if(i>=k)//判断for循环是否正常结束,若是则说明字符串是回文 
            printf("It is a palindrome\n");
        else
            printf("It is not a palindrome\n");
        return 0;
    }
    
    展开全文
  • C语言判断两个lpcwstr字符串是否相等的方法1、使用strcmp判断两个lpcwstr字符串是否相等,如果等于0就相等strcmp((_bstr_t)s1,(_bstr_t)s2);2、C++ 如何比较两个char*是否相等int lstrcmp(LPCTSTR lpString1,...

    C语言判断两个lpcwstr字符串是否相等的方法

    1、使用strcmp判断两个lpcwstr字符串是否相等,如果等于0就相等

    strcmp((_bstr_t)s1,(_bstr_t)s2);

    2、C++ 如何比较两个char*是否相等

    int lstrcmp(

    LPCTSTR lpString1,

    LPCTSTR lpString2

    );

    If the string pointed to by lpString1 is less than the string pointed to by lpString2, the return value is negative. If the string pointed to by lpString1 is greater than the string pointed to by lpString2, the return value is positive. If the strings are equal, the return value is zero.

    展开全文
  • c语言==判断字符串是否相等

    千次阅读 2019-08-12 18:09:24
    最近学习c语言,发现==在比较字符串的时候有点意思。总结如下: 1、如果比的是字符串指针,有可能是相等的 2、如果比较的是字符串本身(通过*p比),只会比较第一个字符 3、比较字符串数组的话,一定是不等的,...

    最近学习c语言,发现==在比较字符串的时候有点意思。总结如下:

    1、如果比的是字符串指针,有可能是相等的

    2、如果比较的是字符串本身(通过*p比),只会比较第一个字符

    3、比较字符串数组的话,一定是不等的,*arr的话比较的是第一个字符

    所以还是用strcmp()吧

    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    #include <malloc.h>

    int main(int argc, char const *argv[])
    {
        char *str1 = "isGood";
        char *str2 = "isGood";
        char *str3 = "isGood3";
        char *str4 = "notisGood3";


        
        printf("1、%d\n", str1==str2);
        printf("2、%d\n", (*str1)==(*str2));
        printf("3、%d\n", str1==str3);
        printf("4、%d\n", (*str1)==(*str3));
        printf("5、%d\n", (*str1)==(*str4));
        

        char arr1[]="isGood";
        char arr2[]="isGood";
        char arr3[]="isGood3";
        char arr4[]="notisGood3";

        printf("1、%d\n", arr1==arr2);
        printf("2、%d\n", (*arr1)==(*arr2));
        printf("3、%d\n", arr1==arr3);
        printf("4、%d\n", (*arr1)==(*arr3));
        printf("5、%d\n", (*arr1)==(*arr4));

        return 0;
    }

     

    输出:

    1、1
    2、1
    3、0
    4、1
    5、0
    1、0
    2、1
    3、0
    4、1
    5、0

    展开全文
  • 目录 一、可以用三种方式解决子串问题:函数strstr、...先举几个例子来说明一下什么样的字符串可以称作子串(区分大小写,假设字符串数组长度为20): 令str1[20]="dou LUO da lu"; 1.str2[20]="da l";是子串; 2.

    目录

    一、可以用三种方式解决子串问题:函数strstr、指针、子串出现的首个位置。

    二、使用函数strstr判断str1中是否包含str2

    三、利用指针来判断是否为子串

    四、不用函数和指针,返回子串在母串中出现的首位置


    一、可以用三种方式解决子串问题:函数strstr、指针、子串出现的首个位置。

    先举几个例子来说明一下什么样的字符串可以称作子串(区分大小写,假设字符串数组长度为20):

    令str1[20]="dou LUO da lu";

    1.str2[20]="da l";是子串;

    2.str2[20]="dal";不是子串;

    3.str2[20]="LUO";是子串;

    4.str2[20]="Luo";不是子串;

    5.str2[20]="dou da";不是子串。

    二、使用函数strstr判断str1中是否包含str2

    1.strstr函数在库函数"string.h"中,它的使用方法是strstr(str1,str2),函数得到的是地址,并不是数据内容,所以要用指针变量来接收;

    2.如果判断str2是子串,就会返回str1中首次出现str2加上其后的内容,否则返回null;

    举个例子:str1[20]="dou LUO da lu"; str2[20]="da l";那么strstr(str1,str2)返回的内容是"da lu";

    3.运行代码和结果(codeblocks和手机程序C Compiler可运行)

    #include<stdio.h>
    #include<string.h>
    void main()
    {
        char str1[20],str2[20];
        char *str;//设置指针变量来存储子串在母串中的地址
        printf("请输入被查找字符串str1:");
        scanf("%s",str1);
        printf("要查找的字符串str2:");
        scanf("%s",str2);
        str=strstr(str1,str2);
        if(str)//判断str是否为空,不能写成str!=null
        {
            printf("str2是子串:%s\n",str);
        }
        else
        {
            printf("str2不是子串:%s\n",str);
        }
    }

    注意代码中进行比较的两个字符串是运行程序后手动输入的,用的scanf函数获取,所以字符串得是连续的,若有空格则会自动将前两个字符串分别赋值给str1和str2,至于第二个空格及以后有多少内容都不管,看结果就知道了:

    所以可以把原代码中的scanf函数改成:

        printf("请分别输入字符串str1和str2,用空格隔开:");
        scanf("%s%s",str1,str2);

    运行结果:

    4.如果不用输入的方式,直接在程序中给定两个字符串的话,可以有多个空格,代码如下:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char str1[20]="dou LUO da lu";
        char str2[20]=" LUO d";//注意必须写成数组型,一定要带下标[N]!!
        char *str;
        str=strstr(str1,str2);
        printf("根据结果自行判断:%s\n",str);
    }

    关于strstr函数的详细定义可以参看https://www.runoob.com/cprogramming/c-function-strstr.html

    三、利用指针来判断是否为子串

    1.基本思路:利用指针p依次遍历str1,每遍历一位字符便将之与str2的首地址值*q进行比较,如果相同则两个指针同时自增,然后依次向后比较,若不同则指针p往下移动一位,再与str2的首地址值*q进行比较,循环往复,直到str2遍历完(即确定str2为子串),或者str1遍历完。

    ①外层循环:for(p=str1;*p;p++)意思是从首地址开始,只要*p不等于'0',则执行内嵌语句块,然后自增;

    ②内层循环:for(q=str2;*p==*q&&*q;p++,q++); 意思是从首地址开始,判断两个字符串的值是否相等且str2是否遍历完,因为for语句后面有分号,表示它没有内嵌语句,所以若判断为真则执行第三表达式,判断为假则退出内层循环,执行外循中内嵌的其他语句,然后再执行外层循环,接着再从头开始执行内层循环。

    关于for循环的详细用法可参看http://c.biancheng.net/cpp/html/45.html

    2.指针初始化与赋值需要注意,在c语言里没有总体处理一个字符串的机制。例如:

    ①char *p="asdfgh"; 初始化,指针p指向字符串首地址

    ②char *p; p="asdfgh"; 赋值,指针p指向字符串首地址

    ③char a[10],*p; p=a; 赋值,数组的变量名a表示该数组的首地址

    ④int a=1; int b[10]; int *p=&a; int *q=b; int *w=&b[0];这些指针初始化都是正确的

    总的来说,指针p指向地址,而*p指向数据,详细了解指针可参看https://www.cnblogs.com/mfrbuaa/p/3756342.html

    3.代码及运行情况:

    #include<stdio.h>
    
    int main()
    {
        char str1[20]="sadadadf";
        char str2[20]="adf";
        char *p=str1,*q=str2;//指针初始化,赋以首地址
        int flag=0;//设置一个变量来判断是否为子串
    
        for(p=str1;*p;p++)//将str1的首地址赋给p;第二个表达式判断字符是否为‘0’;
        {
            for(q=str2;*p==*q&&*q;p++,q++);//注意这里有分号!!这个for语句没有内嵌代码
    
            if(!*q)//如果str2遍历完,此时*q的值一定是默认值‘0’,那么!*q为真
            {
                flag=1;
                break;//得到想要的答案之后就跳出循环
            }
        }
        if(flag==1) printf("是");
        else puts("否");//判断后执行紧邻第一句,可以不加大括号{},puts()和printf()都可以输出
    
    }

    啰嗦几句:最开始用while语句写的代码,发现运行结果不对,调试之后还是for循环好用点,但这个程序还是有个小问题,如果str1="sadadf"; str2="adf"; 运行结果显示“否”,不正确,若str2="df",运行结果为“是”,是对的,那是因为内层循环比较到str1[3]和str2[2]时,前者是‘a’,后者是‘f’,这时候内存循环结束,外层循环执行第三表达式p++,这时候*p='d',再执行内层循环也得不到想要的结果了,我就想着是不是可以再增加一个内层循环,可是呢,对于现在这两个字符串来说,结果是对了,可是如果str1="sadadadf";结果又会出错,还是跟之前一样的问题,嗯~一般情况下还是好使的,不过下面这种不用函数和指针的方法更好,没有这些问题!

    四、不用函数和指针,返回子串在母串中出现的首位置

    1.用getchar()来获取一个个字符,依次存入数组当中;

    getchar()的具体用法可参见https://www.runoob.com/cprogramming/c-function-getchar.html

    2.用while循环将获得的字符依次存入数组中:while((c=getchar())!='\n') a[num++]=c;

    ①如果获得的字符不是回车符,就存入数组a中,包括空格。注意while循环后没有大括号{}或分号;时,则紧邻的第一句为其循环体;

    ②num=0;则(num++)=0,num=1,所以是从a[0]开始存,存到最后一个字符a[num-1],循环结束。

    3.进行判断,如果是子串,返回并输出子串在母串中出现的首位置,否则什么都不返回。(同while一样,若for和if后面没有分号和大括号,则紧跟的第一句为其循环体)

     首先,外层循环先依次判断母串元素a[i]与要查找串的首位值b[0]是否相等,如果相等则进行下一步循环与比较,内循表达式如下:

    if(a[i]==b[0])
    {
        for(j=1;j<lb;j++)
            if(a[i+j]!=b[j])
                break;
        if(j==lb)
        {
        printf("%d\n",i+1);
        }
    }

    因为前面已经判断了a[i]与b[0]相等,所以将数组下标分别下移一位,再比较,每比较一次就判断是否相等,如果相等,下标下移并比较;如果不相等则退出内层循环,判断j与lb是否相等(此时肯定不相等的,只是遵从顺序执行规则,要判断一次),再回到if(a[i]==b[0])语句,此时a的下标已经变成了i+j,即i=i+j,将这一位与b的首位再比较,若相等则循环比较,若不相等则退回到外层循环。

    如果比较之后确定为子串,那么子串一定遍历完,此时jj与lb一定相等。

    4.代码及运行情况:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i,j,la,lb,num=0;
        char c,a[120],b[100];
        printf("请输入母串:");
        while((c=getchar())!='\n')//while循环后没有大括号{}或分号;时,则紧邻的第一句为其循环体
            a[num++]=c;//用数组a存储被查找字符串
    
        num=0;//num一定要重新赋值为0,否则数组b的值就不是从首地址开始
        printf("输入要查找的字符串:");
        while((c=getchar())!='\n')
            b[num++]=c;//用数组b存储要查找的字符串
    
        la=strlen(a);
        lb=strlen(b);
        for(i=0;(la-i)>=lb;i++)//如果遍历到i还没行,将剩下的串长与要查找的串长相比,若还大,接着循环,若小,就不用再比较了
        {
            if(a[i]==b[0])
            {
                for(j=1;j<lb;j++)
                    if(a[i+j]!=b[j])//for后面没有分号和大括号,所以紧跟的第一句为其循环体
                        break;//if后面没有分号和大括号,所以紧跟的第一句为其循环体
                if(j==lb)
                {
                    printf("子串出现的首位置是母串第%d位\n",i+1);
                    break;
                }
            }
        }
    
    }
    
    

    文中三种思路来源于文章https://blog.csdn.net/fakine/article/details/7517417/

    写在最后:每次代码看懂了,复制能够运行,然后自己码一遍,结果运行没问题,但就是结果出了问题,前前后后仔细对比,就是不知道哪里错了,感觉都是对的啊,每次到最后找到问题所在时,基本上都是咪咪小问题被忽略了,就造成了大问题,比如多个或少个分号啊空格,或者数据类型搞的不对、少个简单但很关键的语句等,好的习惯需要更多训练。

    展开全文
  • 判断字符串a和b是否相等,应当使用()。 (A)if(a==b) (B)if(a=b) (C)if(strcpy(a,b)==0) (D)if(strcmp(a更多相关问题Mother was in the kitchen ______ lunch while I was ______ the coming exam.A.prepared; ...
  • C语言判断两个字符串是否相等

    万次阅读 多人点赞 2016-12-29 10:45:10
    可以使用库函数strcmp比较。strcmp是C语言比较字符串的库函数。形式为int strcmp(char *a, char *b);...所以,要判断字符串相等,可以使用if(strcmp(string1, string2) == 0)如果返回为0,则相等,否则不等
  • 文章目录1 字符串相等比较1.1 代码分析 1 字符串相等比较 如果有字符串s1 = “Hello”; s2 = “Hello” ; 在我们看来s1与s2相等。但是如果使用 “==” 来判断是不准确的。因为在代码中s1与s2是是不同的字符串,...
  • C语言strcmp()函数:比较字符串(区分大小写)头文件:#include strcmp() 用来比较字符串(区分大小写),其原型为:【参数】s1, s2 为需要比较的两个字符串字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为...
  • 求:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些...
  • C语言不像其他编程语言有专门的字符串类型,C语言字符串一般是存于字符数组或由字符指针表示,字符串是指一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾,因为NUL为非打印字符,所以选它为终止符,字符...
  • 满意答案 haoyouare 2013.06.19 采纳率:44% 等级:12 已帮助:4648人 您好:其实你的...flag) //flag=0是相等 printf ("the two string are equal."); else printf ("the two string are not equal."); } 01分享举报
  • c语言比较两个字符串是否相等strcmp

    万次阅读 多人点赞 2017-03-27 13:38:46
    C语言提供了几个标准库函数,可以比较两个字符串是否相同。以下是用strcmp()函数比较字符串的一个例子: #include #include int main(void) { char str_1[] = "abc"; char str_2[] = "abc"; char str_3[] = ...
  • C语言字符串比较

    千次阅读 多人点赞 2020-11-02 13:18:19
    在单片机串口实现字符串命令解析这...=、==”,那么要比较两个字符串是否相等是不是直接用“==”比较就行了。下面就来看看这种方法行不行? 先看一个例子 void main( void ) { char s1[] = "abc"; char s2[] ...
  • Q1:C语言程序 用指针实现字符串比较函数strcmp其实你这里主要问题是不能接收到两个输入的字符串。你这里的接受规则是输入两个字符串并用 , 号分隔,比如:abc,abc但是这里就有一个问题了!计算机怎么知道你输入的...
  • 判断字符串相等

    千次阅读 2016-09-18 22:10:34
    因为在C语言中,char数组(C风格字符串)并不支持直接使用==来判断字符串相等,需要调用函数才能达到目的。 (5)至于string,跟(1)差不多的原理,而且C++的string本来就支持直接使用“==”来比较两个字符串...
  • c语言 判断两个字符串是否相等

    千次阅读 2017-10-20 16:30:48
    #include #include int fun(char *a,char *b) { int i,flag=0; for(i=0;a[i]!='\0'&&b[i]!='\0';) if(a[i]==b[i]) i++; else { flag=0; break; } if(a[i]=='\0'&&b[i]=='\0') ...
  • C语言字符串的基本操作

    千次阅读 2019-06-01 15:46:49
    C语言字符串的基本操作 用惯了c#和JavaScript,反过头来再学习c语言字符串操作,真是操碎了...字符串是否相等 复制字符串 #include <stdio.h> #include <string.h> int main() { char str...
  • 对于多个字符(字符串),c不提供相应的处理类型,但可以使用字符数组或字符指针进行处理. char cc,c1 ='a'; char str =”你好,世界! char * ptrr =”您好c语言strchr函数可以查找n字符,世界! ” char * ptr; ...
  • #include<stdio.h> #include<string.h>...//比较两个字符串的大小 void main(){ printf("Enter str1,str2\n"); char str1[100],str2[100]; printf("Enter str1:"); gets(str1);...
  • C语言实现字符串比较(非库函数) 今天在keil上写代码时,使用strlen和strcmp一直会有警告,所以就有了下面的东西,自己写一个判断数组大小和字符数组比较的代码。仅供参考。keil对一些库函数的编译会一直有警告,...
  • C语言-比较字符串是否相等,如下图所示: ①:p++,q++ ②:*p<*q
  • C语言判断两个lpcwstr字符串是否相等的方法1、使用strcmp判断两个lpcwstr字符串是否相等,如果等于0就相等strcmp((_bstr_t)s1,(_bstr_t)s2);2、C++ 如何比较两个char*是否相等int lstrcmp( LPCTSTR lpString1,...
  • C语言基础 字符串

    2014-11-10 00:25:24
    %s 根据\0来判断字符串有多长 总结 : \0 的ASCII码就是 0 1. 字符串是一个以\0结尾字符数组 2. %s输出内容仅会检查是否遇到\ 0 3. 字符数组如果没有部分初始化 那么没有初始化的元素就被初始化为0,\0的ASCII...
  • 1.C语言中的字符串  C语言中的字符串类型是用来处理文本信息数据的。它是由字母、数字、下划线组成的一串字符。我们把这样的数据类型称之为字符串或串。 2.文本数据  2.1 字符串类型常量 " 引起来的内容就是...
  • C语言字符串的比较,如何判定字符串相同? C语言小知识: 注意点: 因为不确定字符串的长度,所以使用while循环, 再比较到字符串的串尾 #include<stdio.h> int main(void) { char arr1[]=...
  • C语言判断回文字符串 程序功能:输入一个字符串,判断其是否为回文字符串。 所谓回文字符串,是指从左到右读和从右到左读完全相同的字符串。 代码实现: #include <stdio.h> #include<stdlib.h> #...
  • 原文地址:C语言常用字符串接口总结 1)字符串操作 strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat(p, p1, n) 附加指定长度字符串  strlen(p) 取字符串...
  • strcmp();是处理字符串的,因此它在头文件string.h中 ...有个小应用判断两个字符串是否相等 if(!strcmp(串1, 串2)); 我们知道 在c语言中,非0就为真,因为-1是非0值,所以为真,所以!(-1)为假,值为0 所以 !strcm...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,796
精华内容 10,718
关键字:

c语言判断字符串相等

c语言 订阅